{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.preprocessing import OneHotEncoder,Binarizer\n",
    "from sklearn.model_selection import train_test_split\n",
    "import numpy as np\n",
    "from sklearn.linear_model import LogisticRegression,LinearRegression\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.metrics import accuracy_score,confusion_matrix,mean_squared_error,recall_score,roc_auc_score,precision_score,f1_score\n",
    "from sklearn.model_selection import GridSearchCV,learning_curve\n",
    "import joblib\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import RocCurveDisplay\n",
    "from sklearn import metrics\n",
    "from sklearn.metrics import precision_recall_curve\n",
    "from sklearn.feature_extraction.text import CountVectorizer,TfidfVectorizer\n",
    "import jieba\n",
    "from sklearn.cluster import KMeans\n",
    "from sklearn.impute import SimpleImputer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [
    {
     "data": {
      "text/plain": "      User ID  Gender  Age  EstimatedSalary  Purchased\n0    15624510    Male   19            19000          0\n1    15810944    Male   35            20000          0\n2    15668575  Female   26            43000          0\n3    15603246  Female   27            57000          0\n4    15804002    Male   19            76000          0\n..        ...     ...  ...              ...        ...\n395  15691863  Female   46            41000          1\n396  15706071    Male   51            23000          1\n397  15654296  Female   50            20000          1\n398  15755018    Male   36            33000          0\n399  15594041  Female   49            36000          1\n\n[400 rows x 5 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User ID</th>\n      <th>Gender</th>\n      <th>Age</th>\n      <th>EstimatedSalary</th>\n      <th>Purchased</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>15624510</td>\n      <td>Male</td>\n      <td>19</td>\n      <td>19000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>15810944</td>\n      <td>Male</td>\n      <td>35</td>\n      <td>20000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>15668575</td>\n      <td>Female</td>\n      <td>26</td>\n      <td>43000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>15603246</td>\n      <td>Female</td>\n      <td>27</td>\n      <td>57000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>15804002</td>\n      <td>Male</td>\n      <td>19</td>\n      <td>76000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>395</th>\n      <td>15691863</td>\n      <td>Female</td>\n      <td>46</td>\n      <td>41000</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>396</th>\n      <td>15706071</td>\n      <td>Male</td>\n      <td>51</td>\n      <td>23000</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>397</th>\n      <td>15654296</td>\n      <td>Female</td>\n      <td>50</td>\n      <td>20000</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>398</th>\n      <td>15755018</td>\n      <td>Male</td>\n      <td>36</td>\n      <td>33000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>399</th>\n      <td>15594041</td>\n      <td>Female</td>\n      <td>49</td>\n      <td>36000</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n<p>400 rows × 5 columns</p>\n</div>"
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv(\"C:\\\\Users\\\\Administrator\\\\Desktop\\\\月考练习算法题 (2)\\\\月考练习算法题\\\\第4套（修改3）\\\\专高6月考-04附件\\\\Social_Network_Ads.csv\")\n",
    "df"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "data": {
      "text/plain": "      User ID  Gender  Age  EstimatedSalary  Purchased\n0    15624510       0   19            19000          0\n1    15810944       0   35            20000          0\n2    15668575       1   26            43000          0\n3    15603246       1   27            57000          0\n4    15804002       0   19            76000          0\n..        ...     ...  ...              ...        ...\n395  15691863       1   46            41000          1\n396  15706071       0   51            23000          1\n397  15654296       1   50            20000          1\n398  15755018       0   36            33000          0\n399  15594041       1   49            36000          1\n\n[400 rows x 5 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>User ID</th>\n      <th>Gender</th>\n      <th>Age</th>\n      <th>EstimatedSalary</th>\n      <th>Purchased</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>15624510</td>\n      <td>0</td>\n      <td>19</td>\n      <td>19000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>15810944</td>\n      <td>0</td>\n      <td>35</td>\n      <td>20000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>15668575</td>\n      <td>1</td>\n      <td>26</td>\n      <td>43000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>15603246</td>\n      <td>1</td>\n      <td>27</td>\n      <td>57000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>15804002</td>\n      <td>0</td>\n      <td>19</td>\n      <td>76000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>395</th>\n      <td>15691863</td>\n      <td>1</td>\n      <td>46</td>\n      <td>41000</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>396</th>\n      <td>15706071</td>\n      <td>0</td>\n      <td>51</td>\n      <td>23000</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>397</th>\n      <td>15654296</td>\n      <td>1</td>\n      <td>50</td>\n      <td>20000</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>398</th>\n      <td>15755018</td>\n      <td>0</td>\n      <td>36</td>\n      <td>33000</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>399</th>\n      <td>15594041</td>\n      <td>1</td>\n      <td>49</td>\n      <td>36000</td>\n      <td>1</td>\n    </tr>\n  </tbody>\n</table>\n<p>400 rows × 5 columns</p>\n</div>"
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['Gender'] = df['Gender'].map({'Male': 0, 'Female': 1})\n",
    "df"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [],
   "source": [
    "X = df[['Gender', 'Age', 'EstimatedSalary']]\n",
    "y = df['Purchased']\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "data": {
      "text/plain": "array([[ 0.98019606,  1.94321462,  0.74168287],\n       [-1.02020406, -1.20871865, -1.40195167],\n       [-1.02020406,  0.31949142, -0.31545197],\n       [-1.02020406, -0.92217926,  0.56549373],\n       [ 0.98019606,  0.41500455,  0.30121002],\n       [ 0.98019606,  0.41500455,  1.123426  ],\n       [ 0.98019606,  0.79705706,  0.77104772],\n       [ 0.98019606,  0.89257019,  1.27025028],\n       [ 0.98019606, -0.44461362, -1.22576253],\n       [-1.02020406, -1.78179743, -1.3138571 ],\n       [-1.02020406,  1.08359645,  0.56549373],\n       [ 0.98019606, -0.63563988, -1.60750566],\n       [ 0.98019606, -0.73115301,  0.27184516],\n       [-1.02020406,  0.98808332,  2.09246627],\n       [ 0.98019606, -0.54012675,  1.38770971],\n       [ 0.98019606, -0.0625611 ,  0.03692631],\n       [ 0.98019606, -1.87731056,  0.47739916],\n       [ 0.98019606,  0.41500455,  0.27184516],\n       [ 0.98019606, -1.01769239,  0.41866944],\n       [-1.02020406,  0.22397829, -0.13926283],\n       [-1.02020406,  1.84770149,  0.12502088],\n       [ 0.98019606, -1.11320552, -1.60750566],\n       [ 0.98019606, -1.11320552,  0.30121002],\n       [-1.02020406, -0.82666613, -0.78528968],\n       [ 0.98019606, -0.44461362,  2.32738512],\n       [-1.02020406,  0.12846516, -0.81465453],\n       [ 0.98019606,  1.5611621 ,  1.00596657],\n       [-1.02020406, -0.15807423, -1.07893824],\n       [ 0.98019606,  0.79705706, -1.1083031 ],\n       [ 0.98019606,  0.22397829,  2.12183112],\n       [ 0.98019606, -0.0625611 , -0.2273574 ],\n       [-1.02020406, -0.82666613,  2.29802026],\n       [ 0.98019606, -0.0625611 , -0.37418169],\n       [-1.02020406, -0.25358736, -0.57973568],\n       [ 0.98019606,  0.41500455, -0.49164111],\n       [-1.02020406, -0.25358736, -0.93211396],\n       [ 0.98019606,  0.31949142, -1.16703281],\n       [ 0.98019606,  0.22397829,  0.06629116],\n       [-1.02020406, -1.11320552, -1.60750566],\n       [ 0.98019606, -0.63563988, -0.05116826],\n       [-1.02020406, -0.25358736, -0.49164111],\n       [ 0.98019606, -0.25358736, -1.3138571 ],\n       [-1.02020406, -0.73115301,  0.56549373],\n       [-1.02020406,  0.31949142,  0.06629116],\n       [-1.02020406, -0.92217926,  1.56389885],\n       [ 0.98019606,  0.79705706,  0.35993973],\n       [ 0.98019606, -1.49525804, -0.19799255],\n       [ 0.98019606,  0.70154394, -1.40195167],\n       [-1.02020406, -0.73115301, -0.60910054],\n       [ 0.98019606, -0.34910049, -1.3138571 ],\n       [ 0.98019606,  0.22397829,  0.15438573],\n       [ 0.98019606, -0.54012675,  1.38770971],\n       [ 0.98019606, -1.39974491,  0.35993973],\n       [-1.02020406, -1.11320552,  0.30121002],\n       [ 0.98019606,  0.98808332,  1.7988177 ],\n       [-1.02020406,  2.03872775,  2.15119598],\n       [-1.02020406, -0.25358736, -0.4329114 ],\n       [-1.02020406, -0.34910049, -0.78528968],\n       [ 0.98019606,  0.12846516, -0.25672226],\n       [ 0.98019606, -1.01769239,  0.77104772],\n       [-1.02020406,  2.13424088,  0.38930459],\n       [-1.02020406, -1.30423178, -0.4329114 ],\n       [-1.02020406,  1.94321462,  2.18056084],\n       [ 0.98019606,  1.46564897,  1.00596657],\n       [-1.02020406, -0.25358736,  0.27184516],\n       [-1.02020406, -0.15807423,  0.85914229],\n       [-1.02020406,  1.84770149, -0.28608712],\n       [ 0.98019606, -0.0625611 ,  1.97500684],\n       [-1.02020406, -0.44461362, -0.78528968],\n       [ 0.98019606,  0.31949142,  0.03692631],\n       [ 0.98019606,  1.37013584, -1.43131652],\n       [-1.02020406,  1.37013584,  2.35674998],\n       [-1.02020406, -0.0625611 ,  0.00756145],\n       [ 0.98019606, -1.11320552,  0.41866944],\n       [ 0.98019606, -1.11320552,  0.06629116],\n       [ 0.98019606, -1.11320552, -0.52100597],\n       [ 0.98019606,  0.31949142, -0.28608712],\n       [-1.02020406, -0.63563988, -0.10989798],\n       [-1.02020406, -0.0625611 ,  2.18056084],\n       [-1.02020406,  0.03295203, -0.25672226],\n       [ 0.98019606, -0.63563988, -1.04957339],\n       [ 0.98019606,  0.41500455,  0.15438573],\n       [-1.02020406,  0.79705706,  1.38770971],\n       [-1.02020406, -0.15807423, -0.52100597],\n       [-1.02020406,  0.03295203,  0.03692631],\n       [-1.02020406,  1.08359645,  0.53612887],\n       [ 0.98019606,  1.84770149, -1.07893824],\n       [ 0.98019606,  0.98808332,  2.0043717 ],\n       [ 0.98019606,  0.89257019, -0.57973568],\n       [ 0.98019606, -0.44461362, -0.02180341],\n       [ 0.98019606, -0.0625611 ,  2.23929055],\n       [ 0.98019606, -1.6862843 ,  0.35993973],\n       [-1.02020406,  0.22397829, -0.66783025],\n       [-1.02020406, -0.25358736, -1.40195167],\n       [ 0.98019606, -1.6862843 , -0.99084367],\n       [ 0.98019606,  0.70154394, -0.72655996],\n       [ 0.98019606, -1.11320552, -0.78528968],\n       [ 0.98019606,  1.94321462,  0.917872  ],\n       [-1.02020406,  0.22397829, -0.37418169],\n       [ 0.98019606,  0.03295203,  1.24088543],\n       [ 0.98019606, -0.0625611 ,  0.30121002],\n       [-1.02020406,  1.08359645, -1.22576253],\n       [ 0.98019606, -0.15807423,  0.15438573],\n       [ 0.98019606,  0.31949142,  0.06629116],\n       [ 0.98019606, -0.25358736, -0.28608712],\n       [-1.02020406,  0.51051768,  1.74008799],\n       [-1.02020406,  0.31949142,  0.50676401],\n       [ 0.98019606,  0.03295203,  1.27025028],\n       [ 0.98019606,  1.94321462, -1.37258681],\n       [-1.02020406, -1.11320552, -1.1083031 ],\n       [-1.02020406, -0.54012675, -1.51941109],\n       [-1.02020406,  0.31949142, -0.52100597],\n       [-1.02020406, -0.63563988, -1.51941109],\n       [-1.02020406, -0.25358736,  0.53612887],\n       [ 0.98019606,  0.98808332, -1.02020853],\n       [-1.02020406, -1.01769239,  0.56549373],\n       [ 0.98019606, -0.25358736,  0.80041258],\n       [-1.02020406,  0.41500455,  0.09565602],\n       [ 0.98019606, -1.59077117, -0.05116826],\n       [ 0.98019606,  0.31949142,  0.06629116],\n       [ 0.98019606, -0.44461362, -0.28608712],\n       [-1.02020406,  0.12846516,  1.88691227],\n       [ 0.98019606, -0.92217926,  0.41866944],\n       [-1.02020406,  0.79705706,  0.53612887],\n       [-1.02020406, -1.30423178, -0.34481683],\n       [ 0.98019606, -0.63563988,  1.41707457],\n       [ 0.98019606,  1.17910958,  0.53612887],\n       [ 0.98019606, -1.6862843 ,  0.35993973],\n       [ 0.98019606, -0.54012675,  1.91627713],\n       [-1.02020406, -1.6862843 ,  0.47739916],\n       [-1.02020406, -0.25358736, -1.25512738],\n       [-1.02020406, -0.82666613, -0.78528968],\n       [-1.02020406, -1.59077117,  0.53612887],\n       [-1.02020406, -0.25358736, -0.31545197],\n       [-1.02020406,  0.70154394, -1.1083031 ],\n       [-1.02020406,  2.13424088, -0.81465453],\n       [-1.02020406, -0.25358736,  0.62422344],\n       [ 0.98019606, -0.25358736, -0.75592482],\n       [ 0.98019606, -1.87731056, -0.75592482],\n       [-1.02020406,  0.41500455,  2.32738512],\n       [-1.02020406,  0.70154394,  0.27184516],\n       [ 0.98019606,  0.22397829, -0.28608712],\n       [-1.02020406, -1.30423178, -1.37258681],\n       [ 0.98019606, -0.44461362, -0.55037082],\n       [ 0.98019606,  0.41500455,  0.00756145],\n       [ 0.98019606,  1.65667523,  1.76945285],\n       [ 0.98019606,  1.17910958, -0.75592482],\n       [ 0.98019606,  0.98808332,  1.44643942],\n       [-1.02020406, -1.78179743,  0.18375059],\n       [ 0.98019606,  0.31949142,  0.06629116],\n       [-1.02020406,  0.22397829,  0.03692631],\n       [-1.02020406, -1.01769239,  0.53612887],\n       [ 0.98019606, -0.15807423,  1.65199342],\n       [-1.02020406, -0.25358736,  0.15438573],\n       [-1.02020406, -0.25358736, -0.34481683],\n       [-1.02020406, -0.34910049,  1.32898   ],\n       [-1.02020406, -0.25358736,  0.09565602],\n       [ 0.98019606,  2.13424088,  1.123426  ],\n       [-1.02020406, -1.20871865,  0.50676401],\n       [ 0.98019606, -1.01769239, -0.46227625],\n       [ 0.98019606, -1.59077117, -1.5781408 ],\n       [-1.02020406, -0.0625611 ,  0.12502088],\n       [-1.02020406, -0.25358736, -0.9027491 ],\n       [-1.02020406,  1.5611621 ,  0.00756145],\n       [ 0.98019606,  0.89257019, -1.16703281],\n       [ 0.98019606,  0.03295203, -0.57973568],\n       [ 0.98019606, -0.25358736,  2.26865541],\n       [ 0.98019606, -0.25358736,  0.21311545],\n       [-1.02020406,  0.31949142,  0.27184516],\n       [ 0.98019606, -0.0625611 , -1.07893824],\n       [ 0.98019606,  2.13424088, -0.69719511],\n       [ 0.98019606, -0.92217926, -0.31545197],\n       [ 0.98019606, -1.39974491, -0.10989798],\n       [-1.02020406, -1.39974491, -0.19799255],\n       [-1.02020406, -0.73115301, -1.54877595],\n       [-1.02020406, -1.20871865, -1.07893824],\n       [ 0.98019606,  2.03872775,  0.38930459],\n       [ 0.98019606,  1.94321462, -0.93211396],\n       [-1.02020406, -1.87731056,  0.35993973],\n       [-1.02020406,  0.79705706, -0.31545197],\n       [ 0.98019606, -1.01769239, -1.54877595],\n       [ 0.98019606,  1.94321462, -0.66783025],\n       [ 0.98019606,  0.98808332, -1.16703281],\n       [-1.02020406,  1.08359645, -0.13926283],\n       [ 0.98019606,  1.17910958, -0.99084367],\n       [-1.02020406,  1.46564897,  0.06629116],\n       [-1.02020406,  0.22397829, -0.37418169],\n       [ 0.98019606,  1.37013584,  1.29961514],\n       [ 0.98019606,  2.03872775, -0.81465453],\n       [ 0.98019606, -0.15807423, -0.19799255],\n       [-1.02020406,  0.41500455,  1.00596657],\n       [-1.02020406, -0.0625611 , -0.52100597],\n       [-1.02020406,  0.98808332, -1.07893824],\n       [ 0.98019606,  2.03872775, -1.19639767],\n       [-1.02020406, -0.0625611 ,  0.27184516],\n       [-1.02020406,  0.22397829, -0.25672226],\n       [-1.02020406,  1.08359645,  0.12502088],\n       [-1.02020406, -1.20871865,  0.59485858],\n       [-1.02020406, -0.73115301, -1.60750566],\n       [-1.02020406,  0.22397829,  0.2424803 ],\n       [-1.02020406, -1.30423178,  0.41866944],\n       [ 0.98019606,  0.03295203, -0.57973568],\n       [ 0.98019606,  0.70154394,  1.7988177 ],\n       [-1.02020406, -1.59077117,  0.06629116],\n       [ 0.98019606, -0.25358736, -1.37258681],\n       [-1.02020406, -0.25358736, -1.46068138],\n       [ 0.98019606, -0.63563988,  0.56549373],\n       [-1.02020406, -0.73115301,  0.30121002],\n       [ 0.98019606,  0.89257019, -0.66783025],\n       [-1.02020406, -1.01769239,  0.59485858],\n       [ 0.98019606, -0.25358736,  0.06629116],\n       [ 0.98019606, -0.73115301,  1.35834485],\n       [-1.02020406,  0.12846516,  1.53453399],\n       [ 0.98019606, -0.82666613,  0.38930459],\n       [ 0.98019606,  0.31949142, -0.19799255],\n       [-1.02020406,  0.98808332,  0.59485858],\n       [-1.02020406,  0.03295203, -0.31545197],\n       [-1.02020406, -0.54012675, -1.51941109],\n       [ 0.98019606,  0.12846516,  0.15438573],\n       [-1.02020406, -1.11320552,  0.33057487],\n       [-1.02020406,  0.12846516,  1.06469629],\n       [ 0.98019606, -1.49525804, -0.4329114 ],\n       [-1.02020406, -0.15807423,  1.41707457],\n       [-1.02020406,  2.13424088, -0.81465453],\n       [ 0.98019606, -0.92217926, -0.4329114 ],\n       [ 0.98019606,  1.27462271,  1.88691227],\n       [-1.02020406,  1.08359645, -1.22576253],\n       [-1.02020406, -0.15807423, -0.28608712],\n       [ 0.98019606,  1.75218836,  1.00596657],\n       [ 0.98019606, -1.01769239, -0.34481683],\n       [ 0.98019606, -1.30423178, -1.1083031 ],\n       [ 0.98019606, -0.34910049,  0.06629116],\n       [-1.02020406, -0.92217926, -1.1083031 ],\n       [ 0.98019606,  1.17910958, -1.46068138],\n       [ 0.98019606, -0.44461362, -0.84401939],\n       [ 0.98019606, -0.82666613, -0.66783025],\n       [-1.02020406, -1.49525804, -1.51941109],\n       [-1.02020406, -0.73115301,  1.91627713],\n       [-1.02020406,  0.89257019,  1.03533143],\n       [-1.02020406,  0.79705706,  0.27184516],\n       [ 0.98019606,  0.98808332,  1.88691227],\n       [ 0.98019606,  0.89257019, -0.60910054],\n       [ 0.98019606,  1.08359645,  2.09246627],\n       [-1.02020406, -0.54012675,  0.88850715],\n       [-1.02020406,  0.03295203,  0.03692631],\n       [ 0.98019606, -1.78179743, -1.28449224],\n       [-1.02020406, -0.0625611 ,  0.21311545],\n       [ 0.98019606,  0.89257019, -0.55037082],\n       [-1.02020406,  0.22397829, -0.37418169],\n       [-1.02020406, -0.15807423,  1.62262856],\n       [-1.02020406, -1.6862843 ,  0.12502088],\n       [-1.02020406, -0.63563988, -0.34481683],\n       [-1.02020406,  0.31949142, -0.72655996],\n       [-1.02020406,  0.41500455, -0.46227625],\n       [ 0.98019606, -0.92217926, -0.96147882],\n       [ 0.98019606,  0.12846516,  0.09565602],\n       [ 0.98019606, -0.92217926,  0.4480343 ],\n       [-1.02020406,  0.03295203, -0.55037082],\n       [-1.02020406,  0.89257019, -0.78528968],\n       [-1.02020406, -0.0625611 ,  0.06629116],\n       [ 0.98019606,  1.08359645, -0.99084367],\n       [-1.02020406,  0.70154394, -1.40195167],\n       [-1.02020406, -0.25358736,  0.06629116],\n       [ 0.98019606, -1.30423178, -1.25512738],\n       [ 0.98019606, -1.11320552, -1.02020853],\n       [ 0.98019606,  0.51051768,  1.85754742],\n       [-1.02020406,  0.12846516,  0.21311545],\n       [ 0.98019606, -0.54012675,  0.47739916]])"
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 特征缩放\n",
    "sc = StandardScaler()\n",
    "X_scale = sc.fit_transform(X)\n",
    "X_train, X_test, y_train, y_test = train_test_split(X_scale, y, test_size=0.33, random_state=42)\n",
    "X_train"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "class LogisticRegression1:\n",
    "    def __init__(self, line_rate=0.1, num_iters=100):\n",
    "        self.line_rate = line_rate\n",
    "        self.num_iters = num_iters\n",
    "        self.weights = None\n",
    "        self.bias = None\n",
    "\n",
    "    def sigmoid(self, x):\n",
    "        return 1 / (1 + np.exp(-x))\n",
    "\n",
    "    def fit(self, X, y):\n",
    "        m, n = X.shape\n",
    "        self.weights = np.zeros(n)\n",
    "        self.bias = 0 #正则化参数\n",
    "\n",
    "        for _ in range(self.num_iters):\n",
    "            y_pred = self.sigmoid(X.dot(self.weights) + self.bias)\n",
    "            cost = -(1 / m) * (np.sum(y * np.log(y_pred) + (1 - y) * np.log(1 - y_pred)))\n",
    "\n",
    "            print(cost)\n",
    "\n",
    "            dw = 1 / m * np.dot(X.T, (y_pred - y))\n",
    "            db = 1 / m * np.sum(y_pred - y)\n",
    "\n",
    "            self.weights -= self.line_rate * dw\n",
    "            self.bias -= self.line_rate * db\n",
    "\n",
    "    def predict(self, X):\n",
    "        y_pred = self.sigmoid((np.dot(X, self.weights)) + self.bias)\n",
    "        return np.round(y_pred)\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [
    "class LogisticRegression1:\n",
    "    def __init__(self, line_rate=0.1, num_iters=100):\n",
    "        self.line_rate = line_rate\n",
    "        self.num_iters = num_iters\n",
    "        self.weights = None\n",
    "        self.bias = None\n",
    "\n",
    "    def sigmoid(self, x):\n",
    "        return 1 / (1 + np.exp(-x))\n",
    "\n",
    "    def fit(self, X, y):\n",
    "        m, n = X.shape\n",
    "        self.weights = np.zeros(n)\n",
    "        self.bias = 0 #正则化参数\n",
    "\n",
    "        for _ in range(self.num_iters):\n",
    "            y_pred = self.sigmoid(X.dot(self.weights) + self.bias)\n",
    "            cost = -(1 / m) * (np.sum(y * np.log(y_pred) + (1 - y) * np.log(1 - y_pred)))\n",
    "\n",
    "            print(cost)\n",
    "\n",
    "            dw = 1 / m * np.dot(X.T, (y_pred - y))\n",
    "            db = 1 / m * np.sum(y_pred - y)\n",
    "\n",
    "            self.weights -= self.line_rate * dw\n",
    "            self.bias -= self.line_rate * db\n",
    "\n",
    "    def predict(self, X):\n",
    "        y_pred = self.sigmoid((np.dot(X, self.weights)) + self.bias)\n",
    "        return np.round(y_pred)\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [
    {
     "data": {
      "text/plain": "LogisticRegression()",
      "text/html": "<style>#sk-container-id-2 {color: black;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LogisticRegression</label><div class=\"sk-toggleable__content\"><pre>LogisticRegression()</pre></div></div></div></div></div>"
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr = LogisticRegression(max_iter=100)\n",
    "lr.fit(X_train,y_train)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\svm\\_base.py:1250: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_sag.py:350: ConvergenceWarning: The max_iter was reached which means the coef_ did not converge\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'fit_intercept': True, 'max_iter': 2, 'solver': 'sag'}\n"
     ]
    },
    {
     "data": {
      "text/plain": "LogisticRegression(max_iter=2, solver='sag')",
      "text/html": "<style>#sk-container-id-3 {color: black;}#sk-container-id-3 pre{padding: 0;}#sk-container-id-3 div.sk-toggleable {background-color: white;}#sk-container-id-3 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-3 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-3 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-3 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-3 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-3 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-3 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-3 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-3 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-3 div.sk-item {position: relative;z-index: 1;}#sk-container-id-3 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-3 div.sk-item::before, #sk-container-id-3 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-3 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-3 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-3 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-3 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-3 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-3 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-3 div.sk-label-container {text-align: center;}#sk-container-id-3 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-3 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression(max_iter=2, solver=&#x27;sag&#x27;)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" checked><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LogisticRegression</label><div class=\"sk-toggleable__content\"><pre>LogisticRegression(max_iter=2, solver=&#x27;sag&#x27;)</pre></div></div></div></div></div>"
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "params1={\n",
    "    'solver':['liblinear','sag','lbfgs'],\n",
    "    'max_iter':[2,3,5],\n",
    "    'fit_intercept':[True,False]\n",
    "}\n",
    "model_1 = GridSearchCV(lr,param_grid=params1,cv=5,scoring='accuracy')\n",
    "\n",
    "#训练\n",
    "model_1.fit(X_train,y_train)\n",
    "#最优参数\n",
    "print(model_1.best_params_)\n",
    "# {'fit_intercept': 'True', 'max_iter': 3, 'solver': 'liblinear'}\n",
    "#最优模型\n",
    "best_model = model_1.best_estimator_\n",
    "best_model"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     Gender  Age  EstimatedSalary\n",
      "0         0   19            19000\n",
      "1         0   35            20000\n",
      "2         1   26            43000\n",
      "3         1   27            57000\n",
      "4         0   19            76000\n",
      "..      ...  ...              ...\n",
      "395       1   46            41000\n",
      "396       0   51            23000\n",
      "397       1   50            20000\n",
      "398       0   36            33000\n",
      "399       1   49            36000\n",
      "\n",
      "[400 rows x 3 columns]\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 1000x600 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAIjCAYAAAA0vUuxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAC7/0lEQVR4nOzdd3gUVdsG8Ht2tu+mbCohIEVUxEIngiI2QFAQUEH9LKCCDUV5LYBKsWFF7AqKnRdQsSMK+GIDgyJgQVHpJZX07e374zDZLOnJtiT377rmgkxmd8/ObpK595zzHMnv9/tBREREREREtVJFuwFERERERESxjsGJiIiIiIioHgxORERERERE9WBwIiIiIiIiqgeDExERERERUT0YnIiIiIiIiOrB4ERERERERFQPBiciIiIiIqJ6MDgRERERERHVg8GJiIhatM6dO2PixInRbgYREbVyDE5ERIQ33ngDkiTh559/jnZTWhyHw4Gnn34aWVlZSEhIgF6vx/HHH4+pU6fi77//jnbziIgoRNTRbgAREVFz7NixAypVdD4HLCwsxPnnn4/NmzfjwgsvxBVXXAGz2YwdO3Zg2bJlWLRoEVwuV1TaRkREocXgREREMcPj8cDn80Gr1Tb4NjqdLowtqtvEiROxZcsWvP/++7j44ouDvvfggw/i3nvvDcnjNOW8EBFRaHGoHhERNdjBgwdx7bXXIj09HTqdDieddBKWLFkSdIzL5cLs2bPRt29fJCQkwGQyYfDgwfjf//4XdNyePXsgSRKefPJJLFy4EMceeyx0Oh22b9+OuXPnQpIk/Pvvv5g4cSISExORkJCASZMmwWazBd3P0XOclGGHP/zwA6ZPn47U1FSYTCaMHTsWBQUFQbf1+XyYO3cu2rdvD6PRiLPPPhvbt29v0Lyp7OxsfP7557juuuuqhSZABLonn3yy8uuzzjoLZ511VrXjJk6ciM6dO9d7XrZs2QK1Wo158+ZVu48dO3ZAkiQ8//zzlftKSkpw++23o2PHjtDpdOjWrRsee+wx+Hy+Op8XERHVjD1ORETUIHl5eTjttNMgSRKmTp2K1NRUfPHFF7juuutQVlaG22+/HQBQVlaGV199FZdffjkmT56M8vJyvPbaaxg+fDg2bdqEXr16Bd3v66+/DofDgSlTpkCn0yEpKanye+PHj0eXLl0wf/58/PLLL3j11VeRlpaGxx57rN723nrrrbBYLJgzZw727NmDhQsXYurUqVi+fHnlMTNnzsTjjz+OUaNGYfjw4di2bRuGDx8Oh8NR7/1/8sknAICrrrqqAWev8Y4+LxkZGRgyZAhWrFiBOXPmBB27fPlyyLKMSy+9FABgs9kwZMgQHDx4EDfccAOOOeYYbNiwATNnzkROTg4WLlwYljYTEbVmDE5ERNQg9957L7xeL3777TckJycDAG688UZcfvnlmDt3Lm644QYYDAZYLBbs2bMnaFjZ5MmT0b17dzz33HN47bXXgu73wIED+Pfff5GamlrtMXv37h10/OHDh/Haa681KDglJyfjq6++giRJAETv0rPPPovS0lIkJCQgLy8PCxYswJgxY/Dhhx9W3m7evHmYO3duvff/559/AgBOOeWUeo9tiprOy4QJE3DDDTfg999/x8knn1y5f/ny5RgyZAjS09MBAAsWLMDOnTuxZcsWHHfccQCAG264Ae3bt8cTTzyB//znP+jYsWNY2k1E1FpxqB4REdXL7/fjgw8+wKhRo+D3+1FYWFi5DR8+HKWlpfjll18AALIsV4Ymn8+HoqIieDwe9OvXr/KYqi6++OIaQxMggllVgwcPxuHDh1FWVlZvm6dMmVIZmpTber1e7N27FwCwbt06eDwe3HzzzUG3u/XWW+u9bwCVbYiLi2vQ8Y1V03kZN24c1Gp1UK/Z77//ju3bt2PChAmV+9577z0MHjwYFosl6LU677zz4PV68e2334alzURErRl7nIiIqF4FBQUoKSnBokWLsGjRohqPyc/Pr/z/m2++iaeeegp//fUX3G535f4uXbpUu11N+xTHHHNM0NcWiwUAUFxcjPj4+DrbXNdtAVQGqG7dugUdl5SUVHlsXZTHLy8vR2JiYr3HN1ZN5yUlJQXnnnsuVqxYgQcffBCA6G1Sq9UYN25c5XH//PMPfv3111oDadXXioiIGobBiYiI6qUUFLjyyitxzTXX1HjMqaeeCgB45513MHHiRIwZMwZ33XUX0tLSIMsy5s+fj507d1a7ncFgqPVxZVmucb/f76+3zc25bUN0794dAPDbb79h8ODB9R4vSVKNj+31ems8vrbzctlll2HSpEnYunUrevXqhRUrVuDcc89FSkpK5TE+nw9Dhw7F3XffXeN9HH/88fW2l4iIgjE4ERFRvVJTUxEXFwev14vzzjuvzmPff/99dO3aFStXrgwaKnd0QYNo69SpEwDg33//DerdOXz4cGWvVF1GjRqF+fPn45133mlQcLJYLNi1a1e1/UrPV0ONGTMGN9xwQ+Vwvb///hszZ84MOubYY49FRUVFva8VERE1HOc4ERFRvWRZxsUXX4wPPvgAv//+e7XvVy3zrfT0VO1dyc7OxsaNG8Pf0EY499xzoVar8dJLLwXtr1rSuy4DBw7E+eefj1dffRUfffRRte+7XC7ceeedlV8fe+yx+Ouvv4LO1bZt2/DDDz80qt2JiYkYPnw4VqxYgWXLlkGr1WLMmDFBx4wfPx4bN27El19+We32JSUl8Hg8jXpMIiJijxMREVWxZMkSrF69utr+adOm4dFHH8X//vc/ZGVlYfLkyejRoweKiorwyy+/YO3atSgqKgIAXHjhhVi5ciXGjh2LCy64ALt378bLL7+MHj16oKKiItJPqVbp6emYNm0annrqKYwePRrnn38+tm3bhi+++AIpKSlBvWW1eeuttzBs2DCMGzcOo0aNwrnnnguTyYR//vkHy5YtQ05OTuVaTtdeey0WLFiA4cOH47rrrkN+fj5efvllnHTSSQ0qdlHVhAkTcOWVV+LFF1/E8OHDq82xuuuuu/DJJ5/gwgsvxMSJE9G3b19YrVb89ttveP/997Fnz56goX1ERFQ/BiciIqp0dO+LYuLEiejQoQM2bdqEBx54ACtXrsSLL76I5ORknHTSSUHlwSdOnIjc3Fy88sor+PLLL9GjRw+88847eO+997B+/foIPZOGeeyxx2A0GrF48WKsXbsWAwcOxFdffYUzzjgDer2+3tunpqZiw4YNePHFF7F8+XLce++9cLlc6NSpE0aPHo1p06ZVHnviiSfirbfewuzZszF9+nT06NEDb7/9NpYuXdro8zJ69GgYDAaUl5cHVdNTGI1GfPPNN3jkkUfw3nvv4a233kJ8fDyOP/54zJs3DwkJCY16PCIiAiR/qGbJEhERtQIlJSWwWCx46KGHcO+990a7OUREFCM4x4mIiNosu91ebd/ChQsBAGeddVZkG0NERDGNQ/WIiKjNWr58Od544w2MHDkSZrMZ33//Pf773/9i2LBhOP3006PdPCIiiiEMTkRE1GadeuqpUKvVePzxx1FWVlZZMOKhhx6KdtOIiCjGcI4TERERERFRPTjHiYiIiIiIqB4MTkRERERERPVoc3OcfD4fDh06hLi4uAYtbkhERERERK2T3+9HeXk52rdvD5Wq7j6lNhecDh06hI4dO0a7GUREREREFCP279+PDh061HlMmwtOcXFxAMTJiY+PD/n9u91ufPXVVxg2bBg0Gk3I75+C8XxHFs93ZPF8Rw7PdWTxfEcWz3dk8XxHTijOdVlZGTp27FiZEerS5oKTMjwvPj4+bMHJaDQiPj6ePywRwPMdWTzfkcXzHTk815HF8x1ZPN+RxfMdOaE81w2ZwsPiEERERERERPVgcCIiIiIiIqoHgxMREREREVE9GJyIiIiIiIjqweBERERERERUDwYnIiIiIiKiejA4ERERERER1YPBiYiIiIiIqB4MTkRERERERPVgcCIiIiIiIqoHgxMREREREVE9GJyIiIiIiIjqweBERERERERUDwYnIiIiIiKiejA4ERERERER1YPBiYiIiIiIqB4MTkRERERERPVgcIoytxuw2wGfL9otISIiIiKi2qij3YC2rrwcyMsDdDogPh4wGAC9HpDlaLeMiIiIiIgUDE4xwOsVPU55eeJrvR6IiwOMRvF/NV8lIiIiIqKo4iV5DJAkEZKMRhGgnE6gsBDw+0VPlMkEmM0iRGk00W4tEREREVHbw+AUY1QqMVzPYBDByekESkqAoiJAqxXhSglROl20W0tERERE1DYwOMUwSRIBSa8XIcrlEnOiiotFz5PRKIb0KSFKkqLdYiIiIiKi1onBqYWQJBGOlF4mtxuw2YDSUjEHSq8PFJfQ6UTPFRERERERhQaDUwul0QTmO3k8YkhfTo4ITKzQR0REREQUWgxOrYBaLTaTSVToczpZoY+IiIiIKJR4Gd3KyHL1Cn0FBeJ7SoU+k0mEKK02um0lIiIiImopGJxasdoq9B0+LEJU1Qp9Wi2LSxARERER1YbBqY2oWqEPECGqaoU+g0EM6VOKSzBEEREREREFMDi1UUdX6HM4gLKyQIU+JUTp9azQR0RERETE4EQ1VujLzQ30UrFCHxERERG1dQxOFKS2Cn3KOlJms5gbZTCwQh8RERERtR289KVa1VSh7/BhoLCQFfqIiIiIqG1hcKIGqatCn1YrAhQr9BERERFRaxX1af8vvPACOnfuDL1ej6ysLGzatKnWY91uNx544AEce+yx0Ov16NmzJ1avXh3B1hIQmPuUkAAkJYmgVFEB7N8P7Nkj/i0uBux2EbKIiIiIiFq6qAan5cuXY/r06ZgzZw5++eUX9OzZE8OHD0d+fn6Nx99333145ZVX8Nxzz2H79u248cYbMXbsWGzZsiXCLaeqtFpRhS8pSQQqhwM4dAjYu1dshw8DNpsY7kdERERE1BJFNTgtWLAAkydPxqRJk9CjRw+8/PLLMBqNWLJkSY3Hv/3225g1axZGjhyJrl274qabbsLIkSPx1FNPRbjlVBuNRgzZs1jE3Ci3W1To27MH2L0bKCgArFZReIKIiIiIqKWI2hwnl8uFzZs3Y+bMmZX7VCoVzjvvPGzcuLHG2zidTuiVFVyPMBgM+P7772t9HKfTCafTWfl1WVkZADHsz+12N+cp1Ei5z4bet8cjemJaY5CouuiuUlwiN1d8TykuYTSK7ze1Ql9jzzc1D893ZPF8Rw7PdWTxfEcWz3dk8XxHTijOdWNuK/n90ZmFcujQIWRmZmLDhg0YOHBg5f67774b33zzDbKzs6vd5oorrsC2bdvw0Ucf4dhjj8W6detw0UUXwev1BoWjqubOnYt58+ZV27906VIYjcbQPSEiIiIiImpRbDYbrrjiCpSWliI+Pr7OY1tUVb1nnnkGkydPRvfu3SFJEo499lhMmjSp1qF9ADBz5kxMnz698uuysjJ07NgRw4YNq/fkNIXb7caaNWswdOhQaJRVZetQXCzWSUpMDHlTWgS/H3C5xLwon08M9TMYxHA/g0F8XVeFvsaeb2oenu/I4vmOHJ7ryOL5jiye78ji+Y6cUJxrZTRaQ0QtOKWkpECWZeTl5QXtz8vLQ7t27Wq8TWpqKj766CM4HA4cPnwY7du3x4wZM9C1a9daH0en00Gn01Xbr9Fowvpmbuj9q9Wi1Lcsh60pMU+tFkP2ABGinE5RpU+jEcP44uMDQ/5qC1Hhfj0pGM93ZPF8Rw7PdWTxfEcWz3dk8XxHTnPOdWNuF7XiEFqtFn379sW6desq9/l8Pqxbty5o6F5N9Ho9MjMz4fF48MEHH+Ciiy4Kd3MpQo6u0Od0AgcPiuISrNBHRERERNES1aF606dPxzXXXIN+/fphwIABWLhwIaxWKyZNmgQAuPrqq5GZmYn58+cDALKzs3Hw4EH06tULBw8exNy5c+Hz+XD33XdH82lQmGg0YgNE8QyHA8jJET10Op3oieIHOUREREQUCVENThMmTEBBQQFmz56N3Nxc9OrVC6tXr0Z6ejoAYN++fVCpAp1iDocD9913H3bt2gWz2YyRI0fi7bffRmJbnSDUhsiyqMJnMgUq9BUUBKoR5ucHhvQxTBERERFRqEW9OMTUqVMxderUGr+3fv36oK+HDBmC7du3R6BVFMtUKlE4wmAQ5dwBoKhIFNpQypybzSJEabXRbSsRERERtQ5RD05EzaEUi0hMFIHK5QLKykSQ0mpFuIqLEyFKp6u7Qh8RERERUW0YnKjVkCQRjpQiii6XKCRRWioq9xkMDavQR0RERER0NAYnarW02sBQPY9HFJc4eFDMl9LrRU+U0Sj+r4pafUkiIiIiagkYnKhNUKvFvCdAFJRwOsXCw0ovVXy86JHS68WxRERERERV8RKR2hxZFj1NRmNwhT6/X4Qos1kUmGCFPiIiIiJSMDhRm1a1Qp/fL0JUUZFYaFerFeHKbBbfZ4U+IiIioraLwYnoCEkKFI7w+0VxifJyUeacFfqIiIiI2jYGJ6Ia1FehT68HEhICIYrFJYiIiIhaNwYnogY4ukKf0xmo0Hd0cQlZjm5biYiIiCj0GJyIGkmtFpvJFFyhDwguc67RiOMYpIiIiIhaPgYnomaoqUJfYaH4v1otwpNGEyguoexTqzm8j4iIiKglYXAiCpGqFfoAMaRPWXi3okKEKUkK9FjpdKKHSqsNhCm1mkUniIiIiGIRgxNRmChBqCq/PxCorFagrEwEKpUqcHzVhXirBioiIiIiih5ejhFFkCQFhu9V5fOJMOX1isp9RUViv0oVCE8Gg+ilqhqoOH+KiIiIKDIYnIhigEoVqNqnDPUDRKByu8Vmt4tgJUkiMHH+FBEREVHkMDgRxTCVKng9KQXnTxERERFFFoMTUQvE+VNEREREkcVLJqJWorb5U36/GOrH+VNERERETcfgFEVeL/D998COHUCXLkBWFi9WKfQkKXTzp/z+6DwHIiIiomhjcIqSlSuBadOAAwcC+zIygAceAEaOjF67qO1oyvwpZY7U4cNi0d+qPVScP0VEREStGYNTFKxcCVxySfVP73NzgSlTgEWLGJ4oeuqaP+V0iq8LCkRQqjp/Sq8Xm9JbxflTRERE1JrwsibCvF7R01TTkCe/X1yMzpkDDB/OYXsUO5T5U0qZ88RE8f6sOn+qrAwoLhb7ZDnQG8X5U0RERNQaMDhF2HffBQ/PO5rfDxw6BNxzD9CrF2CxBLakJPGvMl+FKNrqmz/l8YhiFD6f2M/1p4iIiKilYnCKsJychh333/+KrSYmU3CgqilcHb2ZzZyDQpGjzJ86mtcrAlVD1p/i/CkiIiKKJQxOEZaR0bDjzjpLXDQWFwe2khJxoWm1iq2unqujaTRieFVd4eroAJaQwDkqFFqyXH2Y3tHrT5WWin2cP0VERESxhJceETZ4MNChA3DwYM3znCRJhKu33qp+genziXkkRUXBgaq2rahIhC2HQ3zKX1AgtsZISAgOVEr4qi2AJSUFD9kiqk9D1p/i/CkiIiKKNganCJNl4JlnRFU9SQoOT8pwpHnzar74U6lEcElMbNxj2u21hy1lf0lJ8P7SUnHb0lKx7dnT8MfT60UbG9qzZbEA8fGc30LBOH+KiIiIYgmDUxSMGwe8/37N6zjNmxf6UuQGA5CZKbaG8nhEYKoarhrSw6Ws/5ObK7aGUkJhY+duxVrvgtcLZGcD+flAWhoXNQ4Hzp8iIiKiaGBwipJx44CLLgI+/xzYsQPo0iW2LrLVaiA5WWwN5feLC9b6wtXR+6xWcZFbVCS2xjCZ1DAahyI9XY3k5Ib1cJlM4blYXrUKmD07uAAIFzWOHM6fIiIionDi5UEUyTJwxhnAsceKi/qWTpKAuDixHXNMw2/ndFYfKlhfL1egUIYEq9XYqLlbGk3Dhg9W3eorlLFqlVi8mIsax5bmzJ9SAhXnTxERERHA4EQxQKcD0tPF1lA+n+g9OHzYjR9/3Ii0tEEoLVXXO49LKZSRny+2xji6UEbVULV4MRc1bkkaMn+quFh87fcHF6MwmwND/oiIiKjtYHCiFkmlChSVKC4uRp8+/gaFktoKZVTdF8pCGUBgUeNvvwXOPruxz5Qiqb75U6Wl4r2i1Yohn0qIquk2RERE1LowOFGbEo5CGVu2ABs21H8/V10FdO8O9OoF9Owp/u3evfowMoo9yvwpvV587XIB5eXi9ddoAKNRDFFVqvmx4AQREVHrw+BEVI/6CmVs2NCw4OT3A3/+Kbb//lfs0+mAHj2Cw9Sxx7J0dqzTagND9dxuwGYT4VqZGxUfH1hjiiGKiIiodWBwImqmrCxRPS83t+5FjVeuBH7/Hdi6Fdi2Dfj1V3GxvWWL2BRmM3DKKcFhqkMHXoDHqqrFJ9xuUezk4MFAxb6qIYqBmIiIqOVicCJqJlkWJcenTKl7UeOOHcU2YoTY5/cDu3eLEKWEqd9+EyXdN24UmyIpSQSoU08NhKm0tAg9QWqwqiHK4xEhKidHBKaqIUqvZ4giIiJqaRiciEJg5EhRcrymdZxqW9RYkoCuXcU2dqzY5/EAf/8teqOUMPXnn2Ju1ddfi63qfSu9UsqWkBDOZ0mNoawHZTKJ4hJVQ5ROJ14rJUSx2iIREVHsY3AiCpGRI0XJ8exsUeo8La3xixqr1WLOU48ewGWXiX0OhwhPVXum/vlHXITn5ABffBG4fZcuwUP8Tj45uNw2RYcsiwISRqMoce50Anl54nt6vSgsYTSK14ohioiIKDYxOBGFkCwDgwaF9j71eqB3b7EpKirEsL6qYWrfPjH0b/du4MMPA+05/nhW8oslKpUISAZDIEQVFoqhmzpdcIgiIiKi2MHgRNQCmc3AwIFiUxQVBQepbdtEzxcr+cWuqiHK7xe9i4cPAwUFIjAr5c/dboZdIiKiaGNwImolkpLEArvKIrt+vxjKVzVMsZJf7JKk4BDldIrFmAHRmxgXJza9PlAKnYiIiCKHwYmolZIkoH17sTWnkl/V4hO1rWVFoSVJIiApvUxqdWDBXa1WhKv4+ECIYsAlIiIKPwYnojakrkp+VcNU7ZX81OjUqT/OPFOF3r1ZyS9SdDox7wkAXK7gBXerhiguuEtERBQ+DE5EbVzVSn6XXy72ORzA9u3BYerff4GcHAk5Oe3x44+B27OSX2RptYGhem63eK3KysTrWDVE6fUMUURERKHE4ERE1ej1QJ8+YlNUVABbt3qwatUOHD58In79VcVKflF29IK7Dgdw8KB4DQwGMSeKC+4SERGFBoMTETWIqOTnh073L/r0OR6yrGIlvxiiVovXCBAL7jocQG5uYL5UfLwY7scQRURE1DQMTkTUZKzkF5tkGTCZxOb1BhbclSQRYquGKC64S0RE1DAMTkQUMjVV8vP5gD17mlbJr1cvIDU18s+jNZFlEZKMxsCCuwUF4ns6nQiwJpMIUWr+RSAiIqoV/0wSUVipVM2r5Ne+fXCYOvVUVvJrqpoW3C0sFJtOJwKU2RxcCp2IiIgEBiciirjGVPI7dEhsq1YFbt+1qwhTp57KSn5NVdOCu8XFIrxqtcE9UVxwl4iIiMGJiGJETZX8ysvFsL6qYWr/fmDXLrGtXCmOYyW/5lEKSOj1IkS5XEBJCXD4sAhNSk+UwcAQRUREbReDExHFrLg4YNAgsSkOHw5U8FPCVEFB+Cr5eb1AdraoFpiWBmRlte6CCkoBCZ1OfO1yiQBbXCxCU9Uy51oti3kQEVHbweBERC1KcjJwzjliA0QPyaFDgTAVykp+q1YBs2eLSoGKjAzggQeAkSPD9QxjS9UFd10uwGYT51ajCQ5ROh1DFBERtW4MTkQh5veL6mWtuVcilkgSkJkpNiXMhKKS36pVwJQp4vWsKjdX7F+0qO2EJ0XVEOV2i3lpZWVizppeL4p2KEP+GKKIiKi1YXAiaiK/X1SHq7opZFl8LUmBi03Ot4mc5lbyy8gQQ9OODk2A2CdJwJw5wPDhbTcgazSB97THI4pLHDwozoey4K7BwAV3iYio9WBwIqpHXQFJowksNqqUcNZoxIWi8om81SouKsvLxQW3RhMIUvxUPnIaU8mv6tC8mijDA7Ozg+dftVVqtdiqLribkyN+DnQ60ROlhKi2GjSJiKjlY3AiOqIpAUm5YKzpE3W9Xsz/SEkRIcrlCgQpl0v8C4jbK0GKn8xHVm2V/F56CXjmmfpvv3Mng9PRjl5w1+EA8vLE95SfCaNRBCmGKCIiakkYnKjNqSkgKcOvjg5IWm0gHNUWkOpTdbie2RwcpFwuMe/G6QTsdnGhqQQprZZBKhri4oAzzmhYcJo1C1i7Fhg3Dhg2jGtJHU2lCg5RTqdYbNfvFz9fZnMgRKn514iIiGIc/1RRq9WQgGQ2i6FEVQNSJIbQKT1WJhNgsYi2KUHKahWf0peXi2FPshwIUvyEPjKyssQ8p9zcmuc5AeL1c7tFcFq7VryXLrgAuPhiYOBAht6jqVTBC+46HKK0fEGBCFHKWlFKjy4REVGsYXCiVkHpwfF4RNjw+cSFmlod3YDUUEqbjEYgMVE8ByVI2Wxis1rF81OpAkGKn9KHhyyLkuNTpoj3SNXwpLxnXnwROO44sQjvypXAgQPA8uViy8gQvVDjxomFeCmYJAWHKKdTLLhbVCTe10aj6PlTen2JiIhiAS+7qMXw+0VA8noDAUmZh+R0BobCKZ9Yx2JAaihZDlxYJiSIIKgEKbtdhCi7XZwPVu4Lj5EjRcnxmtZxmjcvUIr8nnuAu+4CfvoJ+OAD4NNPxfEvvCC2Hj1EL9SYMUC7dlF5KjFNkgIlzP3+6gvuVu2JUhblJSIiigYGJ4o5RwckZYjd0T1IynyS3buBTp3E1y0tIDWUShW4uIyPD1xgVi04wcp9oTdypCg5np0N5OcDaWliGN/RQyZVKrE/K0v0VH39tQhR69aJqn3btwMPPyzmTo0bJ+7XZIrOc4plkiTCkRKQlDmAxcXivVy1J4oL7hIRUaQxOFHU1BSQAHExpPQWKQGpau+RWh24YHK7xb9tLSBUvcCsr3Kf3x8cpDj3pnFkuXGV8/R6EYxGjhQX/J9+Koby/fQT8O23Yps5Ezj/fBGizjyTQy5rc/SCuzYbUFoqzpfBID5E4IK7REQUKVG/hHrhhRfQuXNn6PV6ZGVlYdOmTXUev3DhQpxwwgkwGAzo2LEj7rjjDjgcjgi1lppCGWZmtweG4BQXiwsgl0tc8JjNYghUx45Aly6BLTMTSEoSF0hGY9sLSA2lDNdTqvZ16gR07iy2zExx7rxeoKxMzCMpKxMBy+eLdstbN4sFuPpq4KOPgA0bgDvvFO9rux348EPgqquAvn3FcMBff629EAWJn/24OPH7wGgMLLi7d6/YiooClSmJiIjCIaqfcy5fvhzTp0/Hyy+/jKysLCxcuBDDhw/Hjh07kJaWVu34pUuXYsaMGViyZAkGDRqEv//+GxMnToQkSViwYEEUngFV5fMF5h4pPUlAcA+SMsymau9R1R4kCh1W7ostnToBd9wB3H67WGx35UoRqAoLgddeE1u3bmI+1Nix4kMEqpnSGw2I9/XRC+4qH7To9exhJSKi0IlqcFqwYAEmT56MSZMmAQBefvllfP7551iyZAlmzJhR7fgNGzbg9NNPxxVXXAEA6Ny5My6//HJkZ2dHtN1tXV0BSSnzrQyhYUCKHazcFxskCejdW2yzZwPffCPmQ331FfDvv8Bjj4ktKwsYO1ZChw6s+FEX5X1tMon3tNMpFtxVhrNWDVH8UICIiJojapdELpcLmzdvxsyZMyv3qVQqnHfeedi4cWONtxk0aBDeeecdbNq0CQMGDMCuXbuwatUqXHXVVbU+jtPphNPprPy6rKwMAOB2u+FWJsiEkHKfDb1vj0cEESV8xJKjA1LVITBVF4rV6QIBSZZrD0jKHKZQauz5pmBVw5TPF5gnZbeLIFVRIV63QCgW59nr5fkOBZUKOPtssZWXA6tXS/jgAxU2bpSQnS0hO1sNtXo4zjvPj4sv9uDss/0sz10PZe6fsuBubm5gv7LgrvI7qyr+Loksnu/I4vmOLJ7vyAnFuW7MbSW/Pzqj6g8dOoTMzExs2LABAwcOrNx/991345tvvqm1F+nZZ5/FnXfeCb/fD4/HgxtvvBEvvfRSrY8zd+5czJs3r9r+pUuXwmg0Nv+JEBGFWGGhHt9+2wHr13fEvn3xlfvj4lw4/fSDOOus/TjhhGL24BIRETWTzWbDFVdcgdLSUsTHx9d5bIsKTuvXr8dll12Ghx56CFlZWfj3338xbdo0TJ48Gffff3+Nj1NTj1PHjh1RWFhY78lpCrfbjTVr1mDo0KHQNGBRneJiMawkMTHkTalG6UFSNp9PTEavOsTOYAhUX1NKf8fyELvGnm9qOr8fsNvdWL9+Dfr1GwqnUwOXS/RS+f3ifcLKfaHl9brx8cfZ+OOPM/DJJ2rk5QV+EI85xo+xY30YO9aHrl2j2MgWRllw1+EQ/1eGpGq1bmzevAZnnTUUBoMmZn/ntRb83R1ZPN+RxfMdOaE412VlZUhJSWlQcIraUL2UlBTIsoy8vLyg/Xl5eWhXyyqR999/P6666ipcf/31AIBTTjkFVqsVU6ZMwb333gtVDVdrOp0OuhpWTdRoNGF9Mzf0/tVqcZEZyrH3Rwckr1dcICghSKMR4/51uuD5R7EckOoT7teTBOX9kZYmzrcytE9Zb8fpFPOkfL5AkNJqGaSao3PnMowbB9x/v4QffhBFJVatAvbtk/DMMzKeeUZG796iqMTo0UBycrRbHPuUOVHKemhut3jfAsDBgxro9RqYTGJeFIumhBd/d0cWz3dk8XxHTnPOdWNuF7XgpNVq0bdvX6xbtw5jxowBAPh8Pqxbtw5Tp06t8TY2m61aOJKP/DWLUsdZVClzUpR1kI4OSLIMJCQEijRUnYfUUgMSxRZW7oscWRZrPp15JjB/PvDll6KoxDffAFu2iG3uXOCss8T6UMOGBRaJpppVXQ9NOVcGg3i/Hj4sfscq71u9XsyPUt7DvBYiImp7olova/r06bjmmmvQr18/DBgwAAsXLoTVaq2ssnf11VcjMzMT8+fPBwCMGjUKCxYsQO/evSuH6t1///0YNWpUZYBqjY4OSMpkfZWKAYliCyv3RYbBAIwZI7aCAuCTT0SI2rYNWLtWbGYzcMEFIkQNGsRev4ZSq0WQUqbAKuvQVVQAJSWBoc1abaA4jvI+5u9bIqLWLaqXKxMmTEBBQQFmz56N3Nxc9OrVC6tXr0Z6ejoAYN++fUE9TPfddx8kScJ9992HgwcPIjU1FaNGjcLDDz8cracQUvUFJOWTfQYkaimUeXMGgwj3ykWoUrnPahX/ut2BRXz5aX7jpKYC110ntn//FQFq5UrgwAFg+XKxZWSItaEuvhjo3j3aLW5ZVCrxO1evF1/7/YHqk1ZrYH5f1d/P7FklImqdov4579SpU2sdmrd+/fqgr9VqNebMmYM5c+ZEoGWR4/GIIhG1BaSqhRoYkKglq3oRGh8fmGPicolhfVarmCdVXh78yb5Gw/d+Q3TrBtxzD3DXXcDPPwPvvw989plYHPbFF8XWo4cIUGPGALVMJ6U6VA34Co9HhKmiIvHhgNKbyuF9REStS9SDU1tnMADHHMOARG1T1TkmcXFASkrg03ynUwyPqvrJftUgxaFntVOpgAEDxPbgg8C6daIXau1aYPt2sT30EHDGGSJEjRghhvZR0ygjAJR5UhzeR0TUOjE4RZkyjImIgj/NN5tFhbiaKvfZbMEl0Fm5r3Y6HTBypNiKi0UP1MqVwKZNwHffiW3GDBGexo0TxSc456x5OLyPiKh14p9HIopprNwXOhYLcNVVYtu7F/jwQzEnatcu8f8PPxS9fhddBFxyCXDKKewRCYX6hvd5vcHD+0wmDu8jIopFDE5E1KKwcl9odOoE3H47MG2aqMb3wQfAxx8DhYXAa6+JrVs3MZRv7FigY8dot7h1qW14n9UKlJaKfcrwPrM5MLyPw1SJiKKHlxJE1KKxcl/zSBLQq5fYZs8Gvv1WhKgvvxRV+h57TGxZWSJEXXCBCKwUWrUN73O7gby86sP7DAb2rhIRRRqDExG1Kqzc13QaDXDuuWIrLwdWrRLzoX74AcjOFtt99wHnnSdC1DnnBA8/o9CpGvJNJrFPGd5XXCx6Bmsb3qdW871MRBQODE5E1Kqxcl/TxMUBEyaI7dAhMYzvgw+AP/8UgWrVKtHzNGqUCFH9+vFiPdzqGt53dPU+Du8jIgo9BicialNYua/x2rcHbrpJbNu3i16oDz8EcnOBt98WW6dOYi7UuHHAscdGu8VtQ2OG9xmNwcP7OOePiKjx+KuTiNq8hlTuKysTF6LKhWpb7V3p0UNsM2cCGzaIXqhVq0SVvoULxda7t+iFGj1aBFOKjLqG95WUAIcPB4b36XTVq/e11fc0EVFDMTgRER2ltsp9SsWzkhIxId9obLuf3MsyMHiw2ObPF8UkPvgA+OYbYMsWsc2dC5x1luiFGjaMa9ZFQ23D+2w28V6ua3HettrDSkRUmzb6J5+IqOGqVu5LTAxcdFqtIlS19V4ogwEYM0ZshYViPtTKlcDWrcDatWIzm0VFvnHjgEGDeFEeLXUN78vP5/A+IqK68NcgEVEjqNWiWl9cXKBKH3uhAlJSgOuuE9u//4oAtXIlsH8/sHy52DIyxHyoiy8GunePdovbtpqG9yk9rKWlHN5HRFRVG/7zTkTUdJLEXqj6dOsG3H03cOedwM8/i6F8n34K5OQAL74oth49RIAaMwZo1y7aLSYguIcVEMP73G6xHlpZmdjH4X1E1BYxOBERNRN7oeqmUgEDBojtgQeAr78WIWrtWlGlb/t24KGHgDPOECFqxAgxtI9ig0oVKOkPiOF8StGJggLxtSxzeB8RtX78lUZEFCLshaqfTieC0YgRYiHXzz4TQ/k2bQK++05sM2aI748bB5x5Ji++Y41SUEIJSkDw8L6iosAQQA7vI6LWhH+OiIjCgL1Q9bNYgKuuEtu+fSJAffABsGuXWCfqww/FnKmLLhI9UaeeyovuWNWY4X1V3/s+X3TaS0TUFG38zzYRUXixF6phjjkGuP12YNo0YNs2EaI++khU6XvtNbF16yZ6ocaNAzp2jHaLqS5HD+8DAtX7CgvFUD9ArP8VF8fhfUTUMnAaJxFRhCi9UB06AJ06AenpYn9JifhUXrmYbMskCejVS8yF2rwZeOstUThCrxdV+h5/HDjtNBGe3n1XnDtqGZShfYmJordRUVoKHDgA7N4ttn37RDW/igox/M/vj1qTiYiC8HMdIqIIa2gvVFun0QDnniu28nLgiy9ET9T33wPZ2WK77z7gvPPEUL6zzw7u4aDYZzCIYX6ACEgulxjaWl4uvq5avU+vZ/U+IoouBicioiiqay4UBcTFAePHiy0nRyyy+/77wJ9/AqtWiS0xERg1SoSofv04/LGlkaS6h/f5fCJkabUicBmNHN5HRJHFXzVERDGgpl6ooiLxvZIScZHIuVBCRgZw441i275d9EJ9+CGQmwu8/bbYjjkmMB/q2GOr34fXK3qs8vOBtDQRtCj21Fa9r6ys5up9yppSrN5HROHA4EREFGOUXii9XhRKSE0VPVGsyFddjx5imzkT2LBBhKjPPxfzZBYuFFvv3iJAXXQRkJwseqdmzxY9V4qMDDWuvjoDffpE65lQQxxdva+24X0aTWB4nzLcjz8zRNRc/DVCRBSjlE/Mk5NFWW5W5KudLAODB4vtkUeAr74Spc3Xrwe2bBHb3LkiZP32W/Xb5+YCjz3WH127enHhhZFuPTVVbcP7PB7RI+X1ivlQGo04xmgM7pXiXCkiagwGJyKiFoDrQjWcwSB6ly66SMyN+eQTEaK2bq05NAGA3y8B8GPuXBkjRgQKFlDLo/Q4Hb2mlMMhKvX5fOJnRTnm6FLo/CCCiGrDz1qIiFoQZS5USoooad6xoxiSZLMBxcViwVGWbw5ISQGuvVYM31u4sL6jJeTkSFi8OLBoK7V8yppSZrOYP5iUFJgzVVYGHDwo1pPavVv8m58v9tvtoseKiEjBzyeJiFoo9kI1jkbTsOMefFBs3bqJNaV69xbbiSeKXglq+dRqsVWdK1VTBT+NRgyHrVrBj4UniNou/kklImrhGrouVFu/2EtLa9hx6elAXp5YcPfff0XZc0BcNJ90UiBI9eoFdOnC89oaKNX5qgZjn08UnlA+kKhaeEKpcsly6ERtC3/UiYhaEfZC1S4rS5Qyz82tbTijHxkZQHa2hNJSMSdq69ZAcYni4sD/FYmJQM+ewT1TKSmReDYUbipV9cWolcITxcW1F55Qqvix8ARR69NG/3wSEbVu7IWqTpaBBx4ApkwRz7tqeJIkP/x+YO5cL2RZjaQk4JxzxAaIY/ftE0Hql1/Ev7//LgLpN9+ITdGhQ3CQOuWUwJwaatmOLjxRUzl0Fp4gar0YnIiIWjn2QgWMHAksWlR9Had27YCrr/4JI0b0rvF2kiSKcXTqJKr1AaL3YceOQJDauhX4+2/gwAGxffaZOE6lAk44AejTRwSqXr2A449vO+e8NaupHHrVRXqLi8U+pReqajl0rZbVG4laGv7aJiJqI9gLJYwcCQwfDmRniwpqaWlAv34ebNuWA6Dm4FQTjQY4+WSxXX212FdRIRYtrjrMLycH+PNPsb37rjjOYAgM8VN6pzIzW/+5bwtqWqRXGeJ3dOEJnU5UxVSKTmi1fA8QxTIGJyKiNqit90LJMjBoUODrUJWdNpuB008XmyI3NxCitm4Vwaq8HPjxR7EpUlODg1TPniLgUstWtfCEMmRTKTxht4ueKaXwhFotghQLTxDFJv44EhG1YeyFCr927YDzzxcbIC6ad+4MBKktW4Dt24GCAmDNGrEpunYNBKlevURVv6rDwqhlUgpPVOXxiJ6p4mLxHgEC4UnplVI2Fp4gig4GJyIiAsBeqEhRqYDjjhPb+PFin8MB/PFHcBW/PXuAXbvEtnKlOE6jEeGpas9U1668kG4NalpbyuUSW0VFcOGJqmtLKQUr+OEGUfjxTyAREQVhL1Tk6fVA375iUxQVAb/+GghSW7cChw8H5k8p4uMD86WUAhQNXbOKYlfVwhMmk9inFJ6oqBAfaACB4GQysfAEUbgxOBERUa3YCxU9SUnAWWeJDRA9DgcOBFfx+/VXMUfmu+/EpmjfPjhInXpq4OKbWi6l8ITC7w8M8SssFF8rc6qUtaU4tI8odPjnjoiI6sVeqOiTJKBjR7EpJdE9HuCvvwJBautWUSL90CGxrVoljlOpRAn0qvOlundn6G3pJCnQ41RX4QklOOXliQImVYf4EVHD8VcmERE1CnuhYodaHSiJfuWVYp/VKnqiqlbyO3hQBKy//gKWLRPH6fVicV4lSPXuLUIZw2/LVlPhCadT/FtaKjYgEJ6UIMXCE0T14582IiJqEvZCxSaTCRg4UGyKvDxRBl0JUlu3it6In34SmyI5ObhXqmdPMWSQWjblg4z4ePHhhrK2lNst3huACExabaDwhLKuFAtPEAUwOBERUbOxFyq2pacDw4aJDRDDuXbtCl6o948/RPGJdevEpujcORCklJLoVefZUMtTdW2phhSeMBoDa0sp600RtUV86xMRUciwF6plUKmAbt3EdsklYp/TKdaT2ro1UIBi1y5RFn3PHuDDD8VxajXQo0dwSfRu3TjEq6Wrq/DE4cPBhSeOXltKo+HrT20DgxMREYUFe6FaFp1OhKDevYFJk8S+kpLgkuhbtojqbb/+Kra33hLHmc1iWF/V+VLt2kXrmVAo1FZ4wu0WP8/l5WKfLAeOMRiCh/gRtTb8k0VERGHFXqiWKzEROPNMsQGi1+HQoeC1pbZtE8O7fvhBbIp27YKD1KmnihBNLZdKFVhbSqH0SpWWip4ppVfq6LWlNBquLUUtH4MTERFFDHuhWjZJAjIzxXbhhWKfxwP8808gSG3ZIqr35eYCX3whNuW2xx2nFJ1QQa9PwCmn8GK6pVOrxaYM86taeCI/X+xj4QlqLfjniYiIIo69UK2HWg2ceKLYrrhC7LPZgN9+C67it38/8PffYluxQgZwFmbN8uPkk4MX6+3UqWmvu9cLZGeLi/W0NCAri6EsGmorPOF2i57J4mJxjFod6JVi4QlqKfj2JCKiqGIvVOtjNIrgkpUV2FdQULWKnw+bN3tQUaHF5s3A5s3Aa6+J4xITA3OtlAIUycl1P96qVcDs2UBOTmBfRgbwwAPAyJEhfWrUBLIsNmV9qaqFJ4qKRLBSeqW0WvH+qTrEj4UnKFbwTxEREcUE9kK1bqmpwNChYvN6vdi8+QskJY3Er79qgkqil5QA//uf2BTHHBM8X+rkkwNDw1atAqZMERfjVeXmiv2LFjE8xZqqhScU9RWe0OsDt1Gr2ZtI0cHgREREMYe9UK2fJAFduohS5uPGiX0uF/Dnn8Hzpf79F9i3T2wffyyOk2UxNPDUU4HPP68emoBA+ew5c4Dhw3mhHevqKzxRVCReU2VOlVYrwrNWGxj2xzlTFG78s0NERDGLvVBti1Yrypr37BnYV1YmKvcpQWrLFjGP6fffxVYXpQpgdjYwaFBYm05hcHThCSAwX8rhEHOmfL7AnCm1Wvw+MBiCw5Qs83cEhQaDExERtQjshWqb4uOBwYPFBogwlJMjgtSKFcCaNfXfh1LdjVo+Zb5UVcqcKY9HhKmSErG/6pBAvV70ZnG4HzUH/8QQEVGLwl6otk2SgPbtxZaY2LDglJYW9mZRFNU0ZwoQvVFKoCouFl9zuB81B4MTERG1WOyFatuyskT1vNzcmuc5ASJgVa3uR21H1Up9VXG4HzUV/5wQEVGLx16otkmWRcnxKVPEa1tTeLrkEg7JomAc7kdNxeBEREStCnuh2paRI0XJ8aPXcTIYALsdePVVYMQIUYGPqDahHO5HrRf/dBARUavEXqi2Y+RIUXI8O1sUgkhLE+s9TZoEfPcdcPXVwCefiPWgiBqjKcP9lN8pxcXB609xuF/Lx+BEREStXl29UFW53eJCiRc3LY8sVy85vngxMHasWBvqyivFOlAWS3TaR61LXcP9nE7xdV5e4PcJh/u1DgxORETUZhzdC+VwiLBktYrvO51ieBcgLniUCxtW2mqZ4uKAt98GRo0Cdu4UPVDLlomLV6JQUwKSSiW+TkwUoYjV/VoPBiciImqT1GrAbBb/V/5VhnK53YEQ5XaLYX5+f+DCSLm4US6QKHZlZADvvCN6nn76Cbj1VuCVV/jaUeSwul/rweBERER0hFYbPLlbGXrjdgfClM0m/m+3By50qoYpDruJPd27A6+9Bvzf/wGrVgHz5omNKJpY3a/lYXAiIiKqRW2VtqqGKZdLhCmXS1zoeL3BnxorFzYUXYMGAU8/Ddxyi6i0l5kpypgTxRIu5hvb+KuciIiokZSLFYMhsE8ZdqOEKbs90EPl8QRuV/VTYoqsMWNEyfKHHhLrP2VkiPlPRLGOw/1iA39tExERhYAy7KZq4QGfLxCmlOF9yqaEKVkOBKmqpYwpPG68EThwAHjjDWDaNFG6PCsr2q0iappQDPfjMOOGY3AiIiIKE5VKXJzodOJriyUw5MblCnxSrPROVVQEbseKfuEhSaK3KScH+PJL4NprgY8+Ao47LtotIwoNDvcLn5ioKfPCCy+gc+fO0Ov1yMrKwqZNm2o99qyzzoIkSdW2Cy64IIItJiIiahplyI3ZLIJURgbQpQvQubPYMjOBpCRx4eJ2i/WmiovFp8ZWqwhYPl+Un0QLJ8vACy8AffqI83rllWLhXKLWTPndYzQCCQni909SEmAyie85HEBBAbB/P7BnD7B7N7BrF3DwIFBUBJSVBXrL/f5oP5voiHqP0/LlyzF9+nS8/PLLyMrKwsKFCzF8+HDs2LEDaWlp1Y5fuXIlXC5X5deHDx9Gz549cemll0ay2URERCEjSdXnL7CiX3gZDMCbbwKjR4sLxKuvBt5/P1Canqit4HC/hot6cFqwYAEmT56MSZMmAQBefvllfP7551iyZAlmzJhR7fikpKSgr5ctWwaj0cjgRERErQor+oVfUpJY42n0aOC338T8p9dfr37OidqaUA73U6tbz7ppUf116nK5sHnzZsycObNyn0qlwnnnnYeNGzc26D5ee+01XHbZZTCZTDV+3+l0wul0Vn5dVlYGAHC73XC73c1ofc2U+wzHfVN1PN+RxfMdWTzfkdPSznXVqn4JCSIwKYHK5RJDbpxO8a/XK26jFKGIhTDl9bqD/o2mjh2B11+XMH68jP/9T8I99/jw+OPeVjWvI5bOd1vQ2s+30kOlzN0EAtX9bDYxvFhZMFyWA9X99PojIUr2wq9yAyovTBojpGb8sIXid3djbiv5/dEbpXjo0CFkZmZiw4YNGDhwYOX+u+++G9988w2ys7PrvP2mTZuQlZWF7OxsDBgwoMZj5s6di3k1rHK3dOlSGI3G5j0BIiIiahU2bUrHo49mweeTcNllf+Gyy3ZEu0lEFAE2mw1XXHEFSktLER8fX+exLboD/7XXXsMpp5xSa2gCgJkzZ2L69OmVX5eVlaFjx44YNmxYvSenKdxuN9asWYOhQ4dCw77+sOP5jiye78ji+Y6ctnKulWE2VedNKZO9lfLoR8+bCkfPi9frxrZta9Cz51DIcmyc7z59ALPZh1mzZCxb1h39+nXD+PGtYwZ8LJ7v1qytnm+f3we3zwO31wWPzw271w6X1wmvzw2v3wtJkiBDDQlqeD0q2F1ODOzRCSa9tv47r0Uofncro9EaIqrBKSUlBbIsIy8vL2h/Xl4e2rVrV+dtrVYrli1bhgceeKDO43Q6HXRV+xKP0Gg0Yf3jGO77p2A835HF8x1ZPN+R0xbO9dF/Ev3+4LWmlDDldot5U8qQm6phKlTzFWRZE1MXltdcAxw6BDz/PHDPPWpkZABnnRXtVoVOrJ3v1q41n2+/3w+XTwQkt88Nu8cGp9cBj88Nn98LPwBZUkMja6BTGyCrgqtGON0eODweqNWh+Z3bnN/djbldVIOTVqtF3759sW7dOowZMwYA4PP5sG7dOkydOrXO27733ntwOp248sorI9BSIiKi1qmhFf3sdjF/qrVX9JsxQ4SnlSuBKVOADz4ATjkl2q0iih6/3w+3zw2Pzw2XzwWnxwG71waPzwOvzwM//FCrNFBLauhlI9SqFj2grU5Rf2bTp0/HNddcg379+mHAgAFYuHAhrFZrZZW9q6++GpmZmZg/f37Q7V577TWMGTMGycnJ0Wg2ERFRq9WWK/pJEvDUU2Jdp++/F2XKP/lEFJEgau38fj88fjHczu1zB4Ukj08UUVBJMtQqDfSyAWpNC/whb4aoP9sJEyagoKAAs2fPRm5uLnr16oXVq1cjPT0dALBv3z6ojhoTsGPHDnz//ff46quvotFkIiKiNqlqNT+FUk1LCVN2e2DNKWXelBKkWkqY0mqBxYuBceOAP/8ErroK+PBDsWAoUWvi8Xng9omQ5PI6YffY4DoyRwkAVJIKapUGWlkHo9rUrAp4rUFM/PqaOnVqrUPz1q9fX23fCSecgCgWAyQiIqIjlNLEen1gn88XPG/Kbg9sHo/4PiC+1ulEmIq167H4eOCtt8QaT//8A1x3HbB0afDzJGpJREg6MuTO64TNY6382u/3QZJU0Ki00Kq0DEm1iIngRERERK2HSiUCkVKIwmIJVPRTeqV27RJhyekUQ/2U24W7ol9jtG8PvP02MHYskJ0NTJsGvPRS61nMk1ovr88Lt88tepO8LtGT5HPB7XNVhiS1pIFapYahmWsptSUMTkRERBR2KlWgCIUSqDp1Ev/WVNHPZgtvRb+GOvFE4NVXgSuvBD77TISpOXMi2waiuvj8vsrhdS6vC3avDS6vs7InyQ9ArdJAo9JAp4mHSmLybyoGJyIiIooKJRTFekW/M84Ann4amDoVWLQIyMwErr8+vI9JVBOxVpK7MiQ5vPbKMuBenweQpMqeJKPaXK0MODUPgxMRERHFjOZW9NNowjMPaexYUab8kUeAuXOBjAzgggtC/zhECqUMuFK8weGxw+G1HykD7gYkCbKkhlpSwyCbIGsYksKNwYmIiIhiXkMr+tntIkyZzaFvw803AwcOiKIRt94KpKUB/fuH/nGo7am6VlLVkORWepIgyoBrKsuAx0W5xW0TgxMRERG1SDVV9CsrA/btE0P6Qj0fSpKAhx4CcnOBr74CJk4EPv4Y6NYttI9DrZuyVpISkpweB+weW6DCHfyiJ0mlgU7WQ3N09ytFTaN/pXTu3BkPPPAA9u3bF472EBERETWZ2Sw2my089y/LwIsvAr17AyUlomhEfn54HotaB4/PA7vHjjJXKQrt+ThQsRf7y/dgX9lu5FTsR4mzCF6/F1qVFvHaRCTqkhCnjYdBbYBGxdAUSxodnG6//XasXLkSXbt2xdChQ7Fs2TI4nc5wtI2IiIioUVQqUf7c5RKFJsLBYADefBPo3BnYvx+45hrAag3PY1HL4vV5Yfc4AADF9sM4UL4X+8p3Y3/5buRYD6DIUQi31w2NpEG8NhEJuiTEaRNgUBuhkbUsCx7jmhSctm7dik2bNuHEE0/ErbfeioyMDEydOhW//PJLONpIRERE1GBmM2Ayha/XCQCSk4F33gGSkoBffwVuvFEUsKC2w+vzwuFxoMJVjiJ7IQ6W78O+8t04VLEXAFDoKIDL64JaUsOsiUeC1oJ4bSKMGhNDUgvV5NG/ffr0wbPPPotDhw5hzpw5ePXVV9G/f3/06tULS5YsgT9cH/MQERER1UGWRa+T0xm+XicA6NJF9Dzp9cDXXwMzZ4b38Sh6fH4fnF4nKlzlKHYU4ZD1APZX7MH+8t04WLEXhY58OLwOqCQVjGpRuEEJSVpZx7WTWokmF4dwu9348MMP8frrr2PNmjU47bTTcN111+HAgQOYNWsW1q5di6VLl4ayrUREREQNEhcnhtTZbKL3KVz69AFeegm47jpg6VKxQO4dd4Tv8Sj8/H4/XD5XZfEGu8dWuVaSz++FH4AsqaFRaWpcK8nn9Uan4RR2jQ5Ov/zyC15//XX897//hUqlwtVXX42nn34a3bt3rzxm7Nix6M/6nERERBQlsiyG0x04ABiNoiJeuAwbJqrtzZoFPPmkCE8TJoTv8Sh0qpYBd/lcosKd13ZkrSQP/PBDrdJALamhl41Qq1iQui1r9Kvfv39/DB06FC+99BLGjBlTY4nELl264LLLLgtJA4mIiIiawmwWvU52uwhP4XTNNWKB3OefB+6+G2jXDhgyJLyPSY2jlAF3e12BMuBHQpLH5wYg1kpSV66VxJBEwRr9jti1axc6depU5zEmkwmvv/56kxtFRERE1FxqtSjecPCgCFDhnot/zz3isT78EJg8GVi5Ejj55PA+JtXO4/PA7QuEJIfXDpfXVSUkqaBWaaCVdTCqTSzWQPVqdHDKz89Hbm4usrKygvZnZ2dDlmX069cvZI0jIiIiag5lrpPDIf4NJ5UKeOopIC8P2LABuPpq4NNPgczM8D4uKSHpyJA7rxM2jzWwoKzfB0lSQaPSQqvSMiRRkzW6xMctt9yC/fv3V9t/8OBB3HLLLSFpFBEREVEoqNVAYqIYrhcJOh3w6qtA9+4iQF15pVgol0JHKQNe7iqrLAO+v1xUuDtUsQ+HHQVwe91QS2rEaRKQoEtCvDaRayVRszW6x2n79u3o06dPtf29e/fG9u3bQ9IoIiIiolCJjweKi0V4CnevEwAkJABvvQWMHg38/Xeg4p5OF/7Hbk28Pi+8/iObzwOX1wW71waX11nZk+QHoFZpoFFpoNPEs+w3hVWjg5NOp0NeXh66du0atD8nJwdqNSfRERERUWzRaMS6Tjk5kQlOgBie9/bbwLhxwI8/ArffDrzwghjOR6JQgxKKfH5vZUhSqtt5fG5R2e7I9/1+HyBJUEsaqFXqGsuAE4Vbo5POsGHDMHPmTHz88cdISEgAAJSUlGDWrFkYOnRoyBtIRERE1FyR7nUCgB49gMWLxXC9Tz4RZcrvvz8yjx1tPr/vSBDyiGB0JByJinYuuP1u+Py+ytAkAfADkCQJKkmGLMmVxRuU/xNFW6OD05NPPokzzzwTnTp1Qu/evQEAW7duRXp6Ot5+++2QN5CIiIiouTQaMdcpNzdywQkABg8WBSOmTQNefln0RF17beQePxxq6y3y+jxw+UQwUoKSz++Fz+8D4AckCSqoKoORRtJApdJDpVZx3hG1CI0OTpmZmfj111/x7rvvYtu2bTAYDJg0aRIuv/zyGtd0IiIiIooFSq+TwwHo9ZF73EsuEcMEH30UmD0byMgARoyI3OM3ltJbpAQfpeeo6jC6qqHpSF9Rtd4iraxjbxG1Kk2alGQymTBlypRQt4WIiIgobLRaMdcpNzeywQkApk4FDhwA3nlH/H/ZMqB//8i2ARC9RT6/Dx6/p+G9RUc6g5TeIpUkQy2poVLpIKtl9hZRm9Hkag7bt2/Hvn374HK5gvaPHj262Y0iIiIiCoe4OKCoKPK9TpIEPPywCG1r1wITJwIffwx06xbax6mpt8jlcQIAcqyH4IW38hifX/QW+fx+SAj0Fskqmb1FRDVodHDatWsXxo4di99++w2SJMHv9wNA5acNXq83tC0kIiIiChGdTvQ65edHvtdJrQZeegm49FJg61bgqqtE0YjU1IbfR9US3VWH0SlFFzx+T7W5Rcq1msNtg6zWivlFKvEve4uIGq7RwWnatGno0qUL1q1bhy5dumDTpk04fPgw/vOf/+DJJ58MRxuJiIiIQkaZ6+R0Rn5tJaMRePNNscbT3r3ANdcA778v9itFF4Iq0VUp0e32uqr1Fh3JRMFzi1Ra8fWRct0+rxflAIwaM1QyS3gTNVWjg9PGjRvx9ddfIyUlBSqVCiqVCmeccQbmz5+P2267DVu2bAlHO4mIiIhCQqcTi9QWFEQ2OCm9RaZELxa/4cP4cQZs26bCtZMdeOz5fPjl4BLdgB9+ACopUImOvUVE0dPo4OT1ehEXFwcASElJwaFDh3DCCSegU6dO2LFjR8gbSERERBRqCQlASQngcomiEc1VU4luMWzOU+OCruoUHx56zojp13XGd+v1mD83AffMK4RGJUp0yxr2DBHFmkYHp5NPPhnbtm1Dly5dkJWVhccffxxarRaLFi1C165dw9FGIiIiopDS68W6ToWFDQtOPr8vKPiEYkHXgQOARxaU4K6pFnz6fgI6dpRw3U0VYX7mRNRUjQ5O9913H6xWKwDggQcewIUXXojBgwcjOTkZy5cvD3kDiYiIiMIhPl70Ojmdfsia6CzoevZQB+6+vxSPPZCIF5+OR3o7Ly4caw/r8yaipml0cBo+fHjl/7t164a//voLRUVFsFgsHGtLREREMcfn91UJQ1Ur0blRrnKhqMANY5y33t6icJXoHn+lDbk5Mt5cHIcH7k1ESpoPp53uDOljEFHzNSo4ud1uGAwGbN26FSeffHLl/qSkpJA3rC3w+rz4evfX2F+2H+1M7TCo46DKCjjUMB6PBwBQ4aqA2tfkZclCxuvzYsP+Dci15rbK1zTWznckRPM1bYvnO1KOfl0HZAwAwHMdKeF4b1d9TdNMaeif0R9eeOHyuIICk+gtElSSChqDDJTIgFcNvSZ6C7pO/U85cg/J+PJzI+6easGrSwtx/ImeiLeDiGrXqN9WGo0GxxxzDNdqCoGVf67EtNXTcKDsQOW+dFM6ZpwxA0O7Do1iy1oWn0f8ATxQegAqdXQX6Vuzaw0e/f5R5FnzKve1ttc0ls53JET7NW1r5ztSantdJ6ZORNfSrjzXERDq93Ztr+m9g+/FiONGQCWpoFPrIKtq6C3SAz4HUFoKGCNcmrwqlQqY+1gJCgtkbN6kw22Tk/HGewVol+Gr/8ZEFBGN/pjn3nvvxaxZs/D222+zp6mJVv65EpesuORIkdGAfGs+pn85HYtGLcLI40ZGqXUti9cjQnyiIRGyOno9O6v+WYXpX05v9a9prJzvSIiF17Qtne9Iqet1fcz6GLoe7IoLu18Ypda1HaF8b9f1mk5bPQ0GjaHen9X4eKCsDPB4xCK10aLVAk+9WITrLk/Bzn80uO36ZLz230LExfvrvzERhV2jP+Z5/vnn8e2336J9+/Y44YQT0KdPn6CN6ub1eTFt9bRqv+ABVO6bs37OkfUbqCXw+ryY/b/ZfE1bEb6mrVNDXte5387l69qChOpnVa8H4uIAmy0szWyUuHg/nllchNQ0L3b+o8F/bkmCyxXtVhER0IQepzFjxoShGW3Hd/u+CxqedzQ//DhUfgiDlgyCUWOMYMtaJr/fD4fNAf0+fdSKk9jcNuRU5NT6/db0msbC+Y6EWHlN28r5jpT6XlcAyKnIaRU/q7EuVO/thv6sZh/MxqCOg2o9TpJEr1N5OeD1AnKUO3gz2nvx7OLDuP6KFGzO1mHuPYl46KkSqDiKlCiqGh2c5syZE452tBk55XX/0VbUFa6oBo5oN6B+reo1bQHnOxIi9pryfEdUq/pZjXURem/nW/PrPcZgAMxmEZ7i4yPQqHocf6IHjz9fjNsmJ+HLz41o196L2+4qj3aziNo0lg6KsIy4jAYdN3fIXJyUdlKYW9Py+bw+/L3tbxzf83io5Oh8FPdH/h+Y+83ceo9rDa9pLJzvSIiV17StnO9IiZXXlUL33m7oa5pmSqv3GEkCEhJip9cJAE473YnZD5dgzj0WvLk4Du0yvBh/ZQyMJyRqoxodnFSquhd1Y8W9ug0+ZjA6xHfAwbKDNY7JliAhIy4D1/a+tlWVsQ4Xr8cL3S4d+nToE7XJ81mZWXhl8yvIrcht9a9pLJzvSIiV17StnO9Iqe91BYAMc+v4WY11oXpvN+Q1VUmqBs9bU3qdrFYx5ykWXDjWjrxcGS8+HY/HH0xAaroPZw9lNzRRNDT6Y54PP/wQK1eurNyWL1+OGTNmICMjA4sWLQpHG1sVWSXjmfOfASAuvqpSvp531jz+0W5BZJWMB85+AABf09aCr2nr1JDXde6Zc/m6tiB1vaYKn9+Hyz+4HPO/nw+3113n/Sm9Tj4f4I2hKuDX3liBcROs8Psl3Dvdgl+3aKLdJKI2qdE9ThdddFG1fZdccglOOukkLF++HNddd11IGtaajTtxHN4f/361dZzamdth1uBZGNJpCKwuaxRb2HIoJW2tLitkX/QudoZ0GoJnRzyLh797GLkVuZX7W9trGivnOxJi4TVtS+c7Ump7XdNN6bgm9RqcecyZreJnNdaF8r1d22vaPq49Zp0xCxv2b8DS35fi+U3P44d9P+CFkS+gU2KnWu/PaATMcYDdJnqfYoEkAffMKUV+nozv1+tx+w1JeH15ITp14SgfokgK2Ryn0047DVOmTAnV3bV6404ch4tOuAhf/vsldhbvRJopDQMyB/CTzkbyQvzR0Kl1UR/KNPqE0bjguAuw6eAm5FvzW+VrGkvnOxKi/Zq2tfMdKTW9rn3T++KPDX/wXEdIqN/bVV/T3IpcJOgScG7XcyGrZIw9cSyGdB6Cu9fcjS25WzDsnWGYf+58jDtxXI33JUlAQjxgrRC9TrEyvVCtBuY/XYwbrkrG9t+1uPX6ZLyxohBJyTHUNUbUyoUkONntdjz77LPIzMwMxd21GbJKxsjjW/6iqNHkdrvxK35Fh/gO0GhiY+hCF0uXaDchbGLxfEdCtF7Ttnq+I6Xq6+p2u/EH/uC5jpBwvbe7WLrA4XFgX8k+uLwuGFQGAMCFx1+I3u1649YvbkX2wWzc+sWtWL9nPR459xGYtdW7lYxGwGSKrV4nADCa/Fi4qAiTxqfg4H41bp+ShFfePgyDkQvkEkVCoz9HsVgsSEpKqtwsFgvi4uKwZMkSPPHEE+FoIxEREVGD6NV6JBuTYffY4fMHemMy4zOx4tIVuHPgnVBJKnzw5wcY/vZwbM3dWu0+VCox18nrFfOdYklyig/PvXYYCYle/PGbFjPvsMDjiXariNqGRvc4Pf3000FV9VQqFVJTU5GVlQWLxRLSxhERERE1VqI+EVa3FeXOciToEyr3q1Vq3DHwDpx+zOmYumoq9pTuwUXLLsLdg+7GTf1vgkoKfJ6s9DrZ7IDZFI1nUbtOXbx4+uUi3HRNCr77nx6PP5CAmfNKwXWyicKr0cFp4sSJYWgGERERUWjIKhkpxhTYXDY4PU7o1Lqg7w/IHICvrvoK96y9B5/9/Rke+f4RfLvvWzxz/jNoZ24HINDrVHFQ9DqpYmSuk6JnHzceerIYd99mwQfLTGjX3otrb6yIdrOIWrVG/xp4/fXX8d5771Xb/9577+HNN98MSaOIiIiImsOoMSLZmAyr2wq/v/ocoER9Il6+4GU8OfRJGNQGfL/vewx9eyjW7FpTeYzJdGSukz2SLW+4c4Y7cOe9ZQCAFxbEY9XHhii3iKh1a3Rwmj9/PlJSUqrtT0tLwyOPPBKSRhERERE1l8VggUljQoWr5p4YSZJw+SmXY/WVq3FS6kkoshdh4kcTcf/X98PhcUClAhITAY8n9uY6KS672oqrrhPPb96sRGzaoI1yi4har0YHp3379qFLl+oVpjp16oR9+/aFpFFEREREzaVWqZFiTIHX561z8dtuSd3w6eWfYnKfyQCAJVuX4MKlF+Lvw3/DaAQMhtjtdQKA2+4qw7CRdnjcEu6cmoR//grZajNEVEWjg1NaWhp+/fXXavu3bduG5OTkkDSKiIiIKBTMWjOSjckod5XXeZxOrcPcs+bi7bFvI8WYgj8L/8SId0dg6R9vIyHBD7cbqGHEX0xQqYB5jxejT38nrBUq3DY5GXm5MTYpi6gVaPRP1eWXX47bbrsN//vf/+D1euH1evH1119j2rRpuOyyy8LRRiIiIqImkSQJFoMFBrUBVpe13uPP6XIO1l61Fmd1OgsOjwMz1s7A9PWT4VYXx3Svk1YLPPViEboc60Z+noxbr09GeTnL7BGFUqOD04MPPoisrCyce+65MBgMMBgMGDZsGM455xzOcSIiIqKYo5W1SDGmwOV1wevz1nt8qikVb497G7OHzIZGpcHqnV9g4rqh+ClnY8z2OgFAfIIfz71ahJQ0L3b+rcGdtyTB7Yp2q4haj0YHJ61Wi+XLl2PHjh149913sXLlSuzcuRNLliyBVssJiURERBR74nXxsOgtKHOWNeh4laTCDX1vwKeXf4qulq7ItebgP9mX4rlfHofHF7srzmZkevHsosMwmnz4+Ucd5s1KjNnCFkQtTZMHwB533HG49NJLceGFF6JTp06hbBMRERFRSEmShGRjMrSyFnZ3w8fcnZJ+Clb/32pMOGkC/PDjzR3PYPLacThUsT+MrW2eE3p48PhzxZDVfnzxiREvLkyo/0ZEVK9GB6eLL74Yjz32WLX9jz/+OC699NKQNIqIiIgo1HRqHVKMKbB77PD5G94NY9KasGD4Ajx//oswqePwa+FmXPbFUHy55+MwtrZ5Bp7hxH0PlQAA3lwcjy++6BzV9hC1Bo0OTt9++y1GjhxZbf+IESPw7bffhqRRREREROGQoE9Agi6hwUP2qhrb4yJ8OHYNeiT2hdVdjlkbbsbcH++AzV1/0YloGD3Ojhuniee5ePGp+OZrfZRbRNSyNTo4VVRU1DiXSaPRoKys8b+EiIiIiCJFJamQYkyBLMlweByNvv0JGR3x0lkrMbH77VBJKny6awX+b/Vw/Fn0Wxha23zX31yBiy6pgM8n4d7/JOO3bZpoN4moxWp0cDrllFOwfPnyavuXLVuGHj16hKRRREREROFi0BiQbEiGzW2Dv5Fl8tRqIClRjau63oVXzn0P6cYM7CvfjYlfjcLbf77cqCGAkSBJwIw5xejTJw9Ohwq3T0nC/r1ytJtF1CI1Ojjdf//9ePDBB3HNNdfgzTffxJtvvomrr74aDz30EO6///5wtJGIiIgopCwGC8wac70L49YkLg7Q6YAe8afhvyPW4JyOI+HxubFwy4O49X9XotCeH4YWN51aDdx110/o3sOFkmIZU69LRnERF8glaqxG/9SMGjUKH330Ef7991/cfPPN+M9//oODBw/i66+/Rrdu3cLRRiIiIqKQklUyUkwp8Pv9cHkbt9iRRgMkJAAOB5Cgs+DxMxbh3gGPQSfr8WPuN7hs1Xn4/uC6MLW8aQwGL55+uQDtO3hwYJ8at9+QBLudC+QSNUaTPm644IIL8MMPP8BqtWLXrl0YP3487rzzTvTs2TPU7SMiIiIKC7PWjCRDEipcFY0esmc2i14nh0OUOh/X7Uq8c/4XOC7xRBQ7D2PaN1fjqc1z4PI6w9T6xktJ9eG5Vw8jIdGH37dpce/0RHjrXw+YiI5ocj/tt99+i2uuuQbt27fHU089hXPOOQc//vhjKNtGREREFFZJhiQY1AZYG1kZT6sN9DopuiYcjzeHf4bLjr8OALB0x6uY+NUo7C79N5RNbpbOXb1Y8FIRtFo/vllnwOMPJqCRmZGozWpUcMrNzcWjjz5aufhtfHw8nE4nPvroIzz66KPo379/uNpJREREFHIaWYNUUyo8Pg88Pk+jbms2iwDlrNKppJP1uKvfA3h6yBtI1CVhR/EfuHL1+fjw36WN7tUKl159XXjoqWJIkh/vLzXhzcXmaDeJqEVocHAaNWoUTjjhBPz6669YuHAhDh06hOeeey6cbSMiIiIKuzhtHCx6S6PXdlJ6nez26t87M3Molo1ci6x2g+Hw2vHQprtwz/c3oMxVEppGN9O5wx2YPks83+eejMcXnxqi3CKi2Nfg4PTFF1/guuuuw7x583DBBRdAlkNTyvKFF15A586dodfrkZWVhU2bNtV5fElJCW655RZkZGRAp9Ph+OOPx6pVq0LSFiIiImp7JElCkiEJelkPm9vWqNuazaJYhKuG+hKphnQ8f/ZS3NbrXsiSGuv2f47LVw3Dlvy6r3Ui5YprrPi/SRUAgLkzEvHTj9XX6SSigAYHp++//x7l5eXo27cvsrKy8Pzzz6OwsLBZD758+XJMnz4dc+bMwS+//IKePXti+PDhyM+vuYyny+XC0KFDsWfPHrz//vvYsWMHFi9ejMzMzGa1g4iIiNo2nVqHFFMKHB4HvL6GV0zQ6WrvdQLEgrvX9LgZrw/7GB3MnZFrO4gp6y7GK78+1eihgeFw+z1lGDrCDo9bwn9uTsI/O9TRbhJRzGpwcDrttNOwePFi5OTk4IYbbsCyZcvQvn17+Hw+rFmzBuXljV8HYcGCBZg8eTImTZqEHj164OWXX4bRaMSSJUtqPH7JkiUoKirCRx99hNNPPx2dO3fGkCFDWM2PiIiImi1eF49EfSLKnY27pjGbxVpJNfU6KU5K7oWlI77EBV0ugc/vw6LfF2DKukuQYz3QzFY3j0oFzHu8GL37OWGtUGHa5GTk5XKNJ6KaNPpjBZPJhGuvvRbXXnstduzYgddeew2PPvooZsyYgaFDh+KTTz5p0P24XC5s3rwZM2fOrNynUqlw3nnnYePGjTXe5pNPPsHAgQNxyy234OOPP0ZqaiquuOIK3HPPPbUOHXQ6nXBWmbVZVibG87rdbrjd7oY+7QZT7jMc903V8XxHFs93ZPF8Rw7PdWTF8vlOUCeg3FcOq8MKvVrfoNto1IDZBBQVAeqE2o8zqAyYO2ABTks/E4/+PAvbCn7CZauG4t7+j+K8jheG6BlU5ztSc9xXS+1xjRp44rlCXP9/adizS4Npk5Ow6O18mONio5hFS1Pf+SZxbvw+LzweN9zupq8nForfJY25reQPQYkXr9eLTz/9FEuWLGlwcDp06BAyMzOxYcMGDBw4sHL/3XffjW+++QbZ2dnVbtO9e3fs2bMH//d//4ebb765chHe2267DXPmzKnxcebOnYt58+ZV27906VIYjcYGPkMiIiKi0Ml15mLB3gX42/Y3AOC8pPNwfeb10MsNC2vhkJdnwIwZZ6K4WI9TTy3A/fdvhEbD8EStm81mwxVXXIHS0lLEx8fXeWxIglNTNCU4HX/88XA4HNi9e3dlD9OCBQvwxBNPICcnp8bHqanHqWPHjigsLKz35DSF2+3GmjVrMHToUGg0mpDfPwXj+Y4snu/I4vmOHJ7ryIr18+31eXGo/BBsbhsS9HV0IR2lsBAoLgYaennh8bmx6Pen8cafL8APPzrFHYuHBz6HEywnN7HlNfN5vcj5dxsyuvWEqp7iXju2azDlqjTYbCqMGGXFvMeKIDW9Q6BNasz5bqucbg/KbHYM7NEJJn3Ti5KE4ndJWVkZUlJSGhScojYDMCUlBbIsIy8vL2h/Xl4e2rVrV+NtMjIyoNFogoblnXjiicjNzYXL5YJWW/3E63Q66HS6avs1Gk1Yf1mH+/4pGM93ZPF8RxbPd+TwXEdWrJ5vDTRIl9Kxv3Q/vJIXWrlhF3bxCUB5BeD1iUp79dHKMqb2noms9mfi/g23YW/5TkxaOwa39ZqFy0+4HlKIE4tKluu9kD/xFB8ee64Yt09JwhefmpCR6cMt0xs/j50adr7bKpXPD0klQ60Oze+A5vwuacztojb7T6vVom/fvli3bl3lPp/Ph3Xr1gX1QFV1+umn499//4XP56vc9/fffyMjI6PG0ERERETUFCatCcnGZFS4Khq8cK3BAMTF1V5hrzb900/HspFrMKTDcLh9Ljz1y1xMW381DtsLmtDy5hs02In7HioBACx5OQ4fLOPUBiIgisEJAKZPn47FixfjzTffxJ9//ombbroJVqsVkyZNAgBcffXVQcUjbrrpJhQVFWHatGn4+++/8fnnn+ORRx7BLbfcEq2nQERERK2UxWCBSWNChauiwbeJjxeV6jyNrDSeqEvCU4Nfwz39HoZO1uOHnK9x+RdDseHQ+sbdUYiMvtiOG24VBbUenZuAb/9XffQOUVN4fV78kr8R6w99hu/2fdOo8v/RFtVi/RMmTEBBQQFmz56N3Nxc9OrVC6tXr0Z6ejoAYN++fVCpAtmuY8eO+PLLL3HHHXfg1FNPRWZmJqZNm4Z77rknWk+BiIiIWim1So0UYwr2l+6H2+uGRq5/SI/S61Ra2vC5TgpJkjD++Inok3YaZv1wM3aW7sCt6/8P/9d9Cqb2nAGtHNnwMnlqBXJzZHz8vgkzb7fglbcO4+SesVcJkVqOr/evwhObZyPfJmoTPLYV6BDfAc+c/wzGnTguuo1rgKgX6p86dSr27t0Lp9OJ7OxsZGVlVX5v/fr1eOONN4KOHzhwIH788Uc4HA7s3LkTs2bNqrUUOREREVFzmLVmJBmTUO5q+Dyf+HhAkoCmVqPultgdbw3/HOOPmwgAePevRZj01UXYW7azaXfYRJIEzJxXikGDHXDYVbj9hiTs38drLmqar/evwl3fTakMTYqDZQdxyYpLsPLPlVFqWcNFPTgRERERxSpJkpBkSIJBbYDNbWvQbfR6sSiu1dr0x9WrDbin/8NYcObrSNBZ8Ffxb/i/1efjk53LGzznKhQ0GuDRZ4pxQg8Xiotk3HZ9MoqLePlIjeP1efHE5tkAqr93/fDDD+D21bfH/LA9vvOJiIiI6qCVtUgxpsDpcTbowk6SgIQjVcybuwbqkA7DsGzEGvRLHwS7x4Z52dMx64ebUe4qbd4dN4LJ7Mczi4qQkenBvj1q3HFjEux21iinhttSkF2tpymYH/vL9uO7fd9FrE1NweBEREREVI94XTwS9Ykoc5Y16HhlrpOtYZ1UdUozZuDFs5fhlp4zIEsyvtr3CS7/Yhi2FfzU/DtvoNQ0H55bXIT4BB9+26rFff9JbHYopNbP7/fjt8LNWPzbwgYdf7C0rnAVfQxORERERPWQJAnJxmRoZS3s7vrrjSu9Tn6/WNepuWSVjGtPuhWvDf0ImaZjkGM9gMlrL8bi356O2PCmLt08WPBSEbRaP9avNeDJhxIQwVGD1IIU2HLx5vYXcennZ2PiV6Pxc/4PDbvd7owwt6x5GJyIiIiIGkCv1iPFmAK7xw6fv/40ZDAAJjNga8Zcp6OdktIHS0d+hRGdx8Hr9+Ll357EjV+PR671YOgepA69+7nwwBPFkCQ/VrxrwtuvmSLyuBT7XF4n1uz7FLetvwojPuqPZ7c+jN1l/wBuA7DtCsCaCvhrGeLpl4DSjki1DY5soxuJwYmIiIiogRL0CUjQJTRoyJ4kAYkh7HVSmDVxeGjQc3hg4DMwqk34Jf9HXP7FMHy9f1XoHqQOQ0c4cMcM8fyfeTwBX36mj8jjUuzx+/34s+hXzF5/H85e3gczvr8RPxz6Gn74gH2nA58sBp7Mhemrt4HPXj5yo6PCk/L16oXIbB/bVRsZnIiIiIgaSCWpkGxMhizJcHqc9R5vNIpeJ3sI5jod7YIul2DpiC9xUlIvlLlKcNd3k/Hwprth99Q/lLC5/m+SFVdMFAsDz7nHgp+ztWF/TIodu3MPY/aHS3DO68Nw5eoR+PzQ63CgBCjLBL6dBc0rf2LgP2sx7bxL8e5yB9ZtykVa8UXAivfEMVWVdQBWvI+OFeMwOLY7nKK7AC4RERFRS2PUGJFsSEZuRS60shaSVHuFOUkCEuKBinLR6ySH+CPrjnFd8NrQD/HSb0/ire0vYuW/72JL/iY8cvoLON5yUmgf7Ch3zChDXq6MdasN+M/NSViyrBDHHucJ62NSdNjtEn7+Gfhoy3r87FyKinarAdkD6AF4dJD+GovOZf+Hs7qdgYHXenBKLxe02qKg+7jr3lLcdds4YMdFwDHfA+YcoCID2DcYkl/GwveBWF+alcGJiIiIqJESDYmocFWgwlWBOF1cnccajYDJBNjtgDkMU4I0sha39ZqF09oNxv0bp2F32T+45stRmNb7Pkw4flLoH/AIlQp48IliHC5QYetmHW69PglvrihEanoIxyVSVHg8wJ+/a5C9QYf1v+/ADs278J38LpBSWHmMrrA/TvH/H8aedCHOGGeE2ewHUHvX6jnDHXji2WI88XAC8vecVbm/Y0dg4UJg3LjwPZ9QYXAiIiIiaiS1So0UUwr2leyD2+uGRtbUeqxKBSQmAgcPAj6f+DocBrQbjGUj1mDej9Px3aG1eGLz/fgx5xvc3/+J8DwgAJ0OWPBSESZNSMHe3RrcNjkZi5cWHrmIppbC7wd271Qje4MOP23U4qdfy2Hr+l+g1xvAGVsqj9O509HfOB5X9b0Y/boeV/UeGvQ45wx3YMh5Dmz6Ucb+A14M6Z+KYedpYr6nScHgRERERNQEJo0JycZkFNgKYNFb6hyyp/Q62cLU66Sw6JPx9JA3sOLvN7Bwy4P47tBaXPHlcNyaeQsy0Scsj5mQ6Mdzr4rw9PdfGtw9NQnPLDoMDac9xbTcHBU2bdThpw06bPpRh8JCP9BtNdDrdeDGTwHZDQBQQYMBScNw2cnjMbD9WVCrmhcfZBnoM8CJY0+y44yTU1pMaAIYnIiIiIiaRJIkJBmSUOGqgM1tg0lbeyJSqcS6ThVh7nVS2jXhhEnok5aFmT/cjN1l/2DuzrnYqcnBzT3vgUYOfaLJ7OjFM4uKMPnKZGRv0OHB+xIx77ES1JElKcLKSiX8/KMOmzaKbe/uIzEgdbsISz3fBsx5lcd3t5yCUV3H4/zOY5CoS4pSq2MLgxMRERFRE2lkDVJNqdhfuh86n67OT+NNpsBcJ1MElj86ztIDb5//BRZsnoOVO9/FW3+9jJ/zN+KR019Ax7guIX+8E09247FninHHjUn4/CMj2rX34ubby0P+ONQwDgewbbNWBKUNOvy1XQOf70iS1RdD6v9f6Ae+DnvSz5W3seiSMbLzOIzqOh7HWXpEqeWxi8GJiIiIqBnitHGw6C0odhTDYrDUepzS65STE/5eJ4VBbcDMfvNxnLcDXjr0MrYXbcMVXwzHPf0exgVdLqlzeGFTnD7EiVkPlOLBexPx2otxaNfOi3GXhaEWO1Xj9YqCDkpQ2vaLFi5XlddX8iLtjC+gy3oDOXGfwQMn7ABkSY0zMs/F6K4TcHrG2WHpkWwtGJyIiIiImkGSJCQbk2Fz22B322HQGGo91mQCDAbRG2A0Rq6NAxMH4oxTxmJO9u34Jf9HzPnxdmzM+QYzB8yHWVN3VcDGGnOpDbmHZCx+IQ6PzktAaroXg8+uf80rahy/H9izS42fNmqRvUGHzZt0KC8LTuOpaV70OPt3+E55E9vlZch35lR+r1viiRjddTxGdB6HJH1KpJvfIjE4ERERETWTTq1DiikFB8sOQqfWQSXV3J0ky6LC3qFDIkBFcg5QO2N7vHzOCry+/Tks+m0BVu/9EL8VbsbDpz+PU1L6hvSxbritHLk5Mj5dacSM2y1Y/M5h9DjFHdLHaIsK8kRBB1H9Tof8vODKCuY4H/plOdFzYAEc3d7DxvJl+KbwZ8ADwAMkaBNxfuexGNV1ArpbTg55j2Nrx+BEREREFALxuniU68pR7ixHgj6h1uOUXie7PbK9TgAgq2Rcf/LtGJB+Bu7dMBUHrftw3ZqxuPHUO3HNibdAVoWmxJkkAfc+WIKCfBV+/F6PaVOS8PryQnQ4xhuS+28rysslbM7WYdMGMVdp987gsvdarR89+7gwYKAT/QbaYU1dj8/3rsDL+1fBudsBAFBJKgzKOBujuo7HmZlDoZV10XgqrQKDExEREVEIqCQVUowpsLltcHgc0Kv1NR6n9Drl5ES+10lxamo/LB3xFeb/NANf7v0YL2x7DNm53+HBgc8izZgRksfQaIDHny3G5P9LwY4/xRpPS5YVINHCNZ5q43QCv27RYtMGUflu+29VCjoAkCQ/TjzJjf4Dncga5ETPvi4UuPfgs93vYeau95C7/WDlsV3ij8PorhMwoss4pBrSo/F0Wh0GJyIiIqIQMWgMSDYkI9eaC52sq3UolMkE6PVirpOh9ilRYRWnjcfDg17AaRlD8PjP9+HnvA24bNV5mH3aApzVYXhIHsNk9uOZRYcxcUIK9u5WY/pNyXjxjULoa86UbY7XC/z9pwbZG3TYtFGLrT/r4HQGv2c6dfGIoDTQib5ZTiQk+mFzW7F232e49fsV+CX/x8pjzZp4DO90EUZ1HY+Tk3tzKF6IMTgRERERhZDFYIHVbUW5qxzxuvgaj1GrRa9Tbq4IUNG6vpUkCaO7TkDPlH6Y9cMt+Kv4N/zn22txyXFX447es6FXNz/Vpab78NyrRbj2shRs+0WL+/5jwWPPFreohU9Dxe8H9u+VK+co/fSjDmWlwfPhklO9GDDQiQGDnBgw0Il2Gb4jt/Xjl/wf8emPK7B232ewe0S1QgkSstqdidFdJ2BIh2Ehec2oZgxORERERCEkq2SkGFOwr3QfXF4XtLWUdzabo9/rpOgUfyzeGPYJnt/2KN756xW8/89b2JKfjUdOfxHdErs3+/67dvNgwUtFuHliMv63xoCnHvHirvvK2sQCuYUFoqDDTxt1yN6gRV5O8OW3yeRD3yxXZVDq2s0TdF5yrAfw6a738Nnu93CwYm/l/mPiumBU1/G4oMslSDe2j9TTadMYnIiIiIhCzKQ1IdmYjHxrPix6S41DpmKl10mhkbW4o89sZLU7E3N/vB07S3fgqtUjcUef2bj0uGuaPeyrT38XHniiGDNvT8Lyt83IaO/FVddZQ9T62FFRIWHTpnTs+iARP/2ox85/ggs6qDV+9OwdCEo9TnFDfdQVud1jx//2r8Inu5bjp7wfKveb1GYM7TQao7qOR8+UfhyKF2EMTkRERERhYNFbUOGqgNVthVlrrvEYZa6T04mYmfczqP1ZWDZyLeZuvAM/5HyNx36+Fz/mfIP7s56CRZ/UrPseNtKBvJxSLHwsAQsfS0B6Oy+GXeAIUcujw+UCftuqrVx49o9fNfB6O1R+X5L8OP5EN7IGudB/oBO9+7pgMFYvkOH3+/Fr4c/4ZNcKrNn7Cayeisrv9U8/HaO6jsc5HUfCoI5wKUaqxOBEREREFAYaWYNUYyr2l+2Hx+eBWlX9skujAeLjgfz82AlOAJCkT8HCs97Esh2v4dmtj+Cbg19h+xdD8eCgZ9E//fRm3feV11qRmyNj2VtmzL7bgpS0w+jT3xWiloefzwf8/Ze6Miht+VkLhz14nlK7dhUYNAQYMMiFflkuWJJ8td5fnu0QPt/9AT7btQJ7y3dV7s80HYMLu47HhV0uQXtzx7A9H2o4BiciIiKiMDFrzbDoLSiyF8FisNR4TFwcUFoq5jrFUnhSSSpc0X0y+qQNxKwNN2Nv2U7ctG4CJva4BTeceic0Kk39d1IDSQKmzyxDfq6Mr78yYPpNSViyrBBdu3lC/AxCw+8HDuyX8dMGHbI36vDTRi1KS4IrWyQle9F/oBMDBrrQL8sGf8VPyDyhD1S1VMBweh345sCX+GTXCmTnfgufXwQrvWzAecdciNFdJ6B3WlatCylTdDA4EREREYWJJElINibD6rLC5rbBqKk+zEqjARISYq/XSdE96WS8e/5qPLl5Dj7auRSvb38eP+X9gIdPfwEdzJ2adJ+yDDz4ZDEOT5Sx7Rctbr0+CW8sL0Rqeu09M5FUdFiFnzZqRfW7H3U4dCD4ktlo8qFPf1dl9btuxwcKOvi8XhzcUf0+/X4//ji8FZ/uXoEv93yMcndp5fd6p2ZhdNcJOPeYC2DS1Dysk6KPwYmIiIgojLSyFqkmMWRPJ+sgq6r3QpjNQElJ7PU6KQxqI+7PegIDM4bgoey78fvhLbhi1TDM6D8fI7uMa9J96vXAgpcO49rLUrF3txrTpiRj8buFMJkjv0CuzSrhl58CC8/+syO4N01W+3FqLyUouXDSqS5oGtjhVmjPx6rdH+DT3Suwq/Tvyv3pxva4sMulGNX1UnSM6xLKp0NhwuBEREREFGZxujhY9BaUOkqRaEis9n2tVlTYi9VeJ8V5x1yIk5J7474NU7G1YBPu33grfsxZj3v6P9KknpJEix/PLj6MSRNSsONPDe6+zYKFrxQ1OJQ0ldsN/L5NCUpa/LZNC68nuELd8d3dYuHZQU707ueC0dTwQOf2ufH1/lX4dM972JizHl6/FwCgk/U4p+NIjOp6Kfqnn8GheC0MgxMRERFRmKkkVeWQPbvbDoOm+sJNSq+T0wnodJFvY0NlmDLxyrnvYckfz2Lx70/j8z0fYFvhZjxy+gs4KblXo++vwzFePLOoCJOvTMaP3+vx8P2JmDO/JKTl2X0+YOffamQf6VH65Sct7Lbg0JLZwVMZlPqd5kJScuOGDfr9fuwo/gOf7PwvVu36AOXe8srvnZrSF6O6jsfQY0YjTlvzosgU+xiciIiIiCJAr9Yj2ZiMnIoc6NS6ar0NWq2Y61RQENvBCQDUKjWmnDId/dPPwH0bpuJAxR5M+uoi3Nzzblx94k2N7knpcYobjz1TjOk3JeHTlUa0y/Dixmnl9d+wDocOyGKO0kZRKry4KHiIZKLFiwEDXUeKOjjR4Rhvkx6n2HEYX+xZiU92Lcc/JX9W7k81pOOCLpfiwi6XoktCt2Y9F4oNDE5EREREEZKoT4TVbUW5sxwJ+oRq31d6nVwuEaRiXe+0AfjvyK/wUPbdWLf/czy39RFk53yLBwY+g1Rju0bd1xlnOTFjbikevj8Ri1+IQ3qGF6MvtmHLz1oUFshISfWidz8XailUh+IiFX76UYufNuqQvUGHg/uDL3P1Bh/69ndV9ip1O8EDVRNHyrl9bvxw6Gt8umsFvju4Fl6/qAioUWkxJHMYBmn6YGTfSdBoWsCLSA3G4EREREQUIbJKRooxBTaXDU6PEzp1cNeSTid6nQoLW0ZwAoB4bSIeO+MVfLTzv3hy82xsyvsel30xFHNOW4AzM4c26r7GTbAhN0fGay/G4ZHZCXj+qTiUFAeSUlo7L+66txTnDHfAbpOw5efAwrM7/jyqoIPsx8k9XRgw0IWsQU6c3NOF5uaYf0r+xKc7l2PVnpUodh6u3N8jqSdGdR2P4Z0uQpw6Hgd3/FJjERBq2RiciIiIiCLIqDEi2ZiMPGsetLIW0lGTecxmoKS05fQ6AaLs+thuV6BX6gDcu+Fm7Cj+A3d8MxETjr8W03rfC53c8IoXN00rx5aftfhlkw4lxcFdQvm5Ktx1qwVdjvVg/z41PO7gc9ftBLeofDfQiT79XSGp0FfqLMbqPR/hk13L8Vfxb5X7k/QpGNn5YozqOh7dErtX7vd5mzbkj2IfgxMRERFRhFkMFlS4KlDhqkCcLi7oe3o9kBAPFBW1nOCk6JLQDW8M+xTPb52Pd3csxvK/l2Bz/kbMP/1FdE04vkH34fMBB/aqAfgBHF0hQny9e6foXWrX3oOsQaJEeP/TnEhOCc06UB6fBz/mfINPdi3HtwfXwO1zAQDUKg3OzByKUV0uxcD2Zzd5EWBqmRiciIiIiCJMrVIjxZiC/aX74fa6oZGDL8Dj4oDSMlE2O9yluUNNK+swve9cZGWciTkbb8e/JX/iytUjML3PHFzc7apqPWxH2/KzFvl59Q9ze/DJIowY5Qhp9b3dpf/g010r8PmeD1Boz6vcf4LlJIzqOgHndxoLiz4pdA9ILQqDExEREVEUmLVmJBuTUWArQJIh+GJcrwfi44DiYjHnqSU6vf05WDZyLeZsvB0/5n6D+T/NxI853+L+rCeQoLPUervCgobNDVKppJCEpnJXKb7c+zE+3bUCvx/eUrk/UZeEEZ3HYlTX8TjBcnLzH4haPAYnIiIioiiQJKlyyJ7VZYVJawr6flwcUNZCe50UKYY0PHf2O3j3r0V4ftuj+N+BL7C9aCseHPgc+qYPrPk2qQ2bI9TQ42ri9XmxKe97fLprOf63fzVcPicAQJZknN7+HIzqOgGD258LjdzCxkpSWDE4EREREUWJVtYixZiCA2UHoPfpgyqxGQxHhuyVttzgBIjFf6868Ub0Sx+EWT/cjH3lu3HDuktx7Um3Ycop06FWBV+O9u7nQlo7L/LzVIC/hi4lyY/0dqI0eWPtK9uFT3evwOe730eeLady/7EJJ2BU1/EY2fliJBtSG32/1DYwOBERERFFUbwuHha9BcWOYlgMwUPY4uOB8nLA4wHULfyq7cSkU/Hu+V/iic3345Ndy/HaH8/gp7zv8fCgF9De3LHyOFkG7rq3FHfdZgEkf3B4kvyQANw5q6zW9ZyOVuEux9p9n+GTXcuxreCnyv3x2kSc32kMRnUdjxOTTq137hVRC/8RJCIiImrZJElCsjEZVrcVdrcdBo2h8nt6vShPXlYmQlRLZ9SYMOe0BTit3RA8/NM9+LVwMy77Yiju7f8Yhne+qPK4c4Y78MSzxXji4QTk5wYSUno7L+6cVYZzhjvqfByf34ef8zbgs10rsG7/Kji8dgCi92tgu7NwYddLMaTDsEaVSSdicCIiIiKKMp1ahxRjCg6WH4ROrYNKEusXSZIoDlFeDni9aHAvS6wb3vkinJLSB/duuAW/Fm7GrA03Y2Puetzd9yEYNWKu1znDHRhyngNbftaisEBGSqoYnlfXOThYsQ+f7XoPn+1+D4es+yv3d4o/FqO7TsDIzuOQZswI99OjVorBiYiIiCgGJOgTUOGqQJmzDIn6xMr9Sq9TeXnr6HVStDd3xOLzVmLx709jyR/P4tNdK7Ct4Cc8cvqLODHpVHGQ5AU6rwfS8wFDGiBlAQhOTnaPDWv3fYZPd63A5vyNlftNmjgM7zQao7tOwMnJfTgUj5qNwYmIiIgoBqgkFVKMKbC5bXB4HNCrxTCy1trrBIj1rG469S5ktRuM+zZMxb7y3Zj41Wjc0nMG2ps64qlf5iC/ShGHNGMG7ur7AM7uMAJbCzbhk13LsXbfZ7B5rAAACRIGtBuMUV3H4+wO50OvNtT20ESNxuBEREREFCMMGgOSDcnIteZCJ+sqe0mUCnsVFeLf1qZP2mn474g1eGjT3fh6/yo8s+XBGo/Lt+Xgru8mI1mfisOOgsr9HcydMarrpbigy6XIMGVGqtnUxjA4EREREcUQZW2nclc54nVibJ4kBSrseX2ArIpyI8MgQWfB42cswvv/vIVHf55V57GHHQUwyEYM6zQao7qOR6/UARyKR2HH4EREREQUQ2SVjBRTCvaX7ofL64L2yCKsRiNgMgN2m5jz1BpJkoQuCcc16NjHzngFp2eeE+YWEQW0ws8riIiIiFo2s9aMJEMSKlwV8Pv9AESvU2IC4POJXqfWqtCe36Djyt1lYW4JUTAGJyIiIqIYlGRIgkFtgNVtrdxXtdeptUoxpIX0OKJQYXAiIiIiikEaWYNUUyo8Pg88Pg+AIxX24kV1PV8r7XXqnZp1ZK2l2uYsSUg3tkfv1KxINouIwYmIiIgoVsVp42DRW1DmDAxLMxoBkwmw2aPYsDCSVTLu6vvAka+ODk8SJAB39p0HWdWK6rJTi8DgRERERBSjJElCkiEJelkPm1uMz1OpgMREwOtpvb1O53QciScGL0KasV3Q/nRjBh4fvAjndBwZpZZRW8aqekREREQxTKfWIcWUggNlB6CTdZBVMoxG0fNkswNmU7RbGB7ndByJIZnDsaUgG4X2fKQY0tA7NYs9TRQ1DE5EREREMS5eF49EfSLKHGVINCRW9jodPCh6nVStdAyRrJLRL31QtJtBBIBD9YiIiIhinkpSIdmQDLVKDYfHAUDMczKZAHsrnetEFGsYnIiIiIhaAIPGgGRjMmxuG3x+H1QqICEBcLuBI0s9EVEYMTgRERERtRCJ+kTEaeNQ7iwHIHqcjEb2OhFFAoMTERERUQshq2SkGFMgQYLL64Isi7lOLhd7nYjCjcGJiIiIqAUxaU1INiajwlUBv98PkwnQ69nrRBRuDE5ERERELYzFYIFJY4LVbYUsAxYLe52Iwo3BiYiIiKiFUavUSDGmwO11w+11V/Y6ORzRbhlR68XgRERERNQCmbVmJBuTUe4qh1ot5jo5nex1IgoXBiciIiKiFkiSJCQZkmBQG2Bz22A2i14npzPaLSNqnRiciIiIiFooraxFijEFTo8TksqLxEQxXI+9TkShFxPB6YUXXkDnzp2h1+uRlZWFTZs21XrsG2+8AUmSgja9Xh/B1hIRERHFjnhdPBL1iShzlsFkAnQ69joRhUPUg9Py5csxffp0zJkzB7/88gt69uyJ4cOHIz8/v9bbxMfHIycnp3Lbu3dvBFtMREREFDskSUKyMRlaWQsP7EhIYJEIonBQR7sBCxYswOTJkzFp0iQAwMsvv4zPP/8cS5YswYwZM2q8jSRJaNeuXYPu3+l0wlnlY5eysjIAgNvthtvtbmbrq1PuMxz3TdXxfEcWz3dk8XxHDs91ZPF8h54MGYnaROSU58CoV0OjUcFmA/Q6wOf1Agj8S+HF810/n9cLv88Lj8cNt1tq8v2E4ndJY24r+f3RGwXrcrlgNBrx/vvvY8yYMZX7r7nmGpSUlODjjz+udps33ngD119/PTIzM+Hz+dCnTx888sgjOOmkk2p8jLlz52LevHnV9i9duhRGozFkz4WIiIiIiFoWm82GK664AqWlpYiPj6/z2Kj2OBUWFsLr9SI9PT1of3p6Ov76668ab3PCCSdgyZIlOPXUU1FaWoonn3wSgwYNwh9//IEOHTpUO37mzJmYPn165ddlZWXo2LEjhg0bVu/JaQq32401a9Zg6NCh0Gg0Ib9/CsbzHVk835HF8x05PNeRxfMdPna3HQfKDgA+LQrzdJBlQCN7kfPvNmR06wmVLEe7ia2ez8vzXR+n24Mymx0De3SCSa9t8v2E4neJMhqtIaI+VK+xBg4ciIEDB1Z+PWjQIJx44ol45ZVX8OCDD1Y7XqfTQafTVduv0WjC+ss63PdPwXi+I4vnO7J4viOH5zqyeL5DT6PRIM2fhtyKXFgsBhQUSNDFie+pZJkX8hHE8107lc8PSSVDrQ7N74Dm/C5pzO2iWhwiJSUFsiwjLy8vaH9eXl6D5zBpNBr07t0b//77bziaSERERNSiJBoSYdaa4ddWQKsFnK5ot4iodYhqcNJqtejbty/WrVtXuc/n82HdunVBvUp18Xq9+O2335CRkRGuZhIRERG1GGqVGimmFKjVXhjj3HCywh5RSER9qN706dNxzTXXoF+/fhgwYAAWLlwIq9VaWWXv6quvRmZmJubPnw8AeOCBB3DaaaehW7duKCkpwRNPPIG9e/fi+uuvj+bTICIiIooZJo0JycZkHHQVQJZDP6ebqC2KenCaMGECCgoKMHv2bOTm5qJXr15YvXp1ZcGIffv2QaUKdIwVFxdj8uTJyM3NhcViQd++fbFhwwb06NEjWk+BiIiIKKZIkoQkQxIqXBWwG2zRbg5RqxD14AQAU6dOxdSpU2v83vr164O+fvrpp/H0009HoFVERERELZdG1iDVlIpi014AgNsN6FirgKjJojrHiYiIiIjCJ04bh/S4RACA3R7dthC1dAxORERERK2UMmQPANyww+2OcoOIWjAGJyIiIqJWTKsWC4xqDQ5UWH1Rbg1Ry8XgRERERNQGZCTFw+Erg8cT7ZYQtUwMTkRERERtQKYlGfHxMkrKubATUVMwOBERERG1AXqNHp1Sk+Hw2uB2+6PdHKIWh8GJiIiIqI1ob7EgPcmMgrLyaDeFqMVhcCIiIiJqI9SyjC5pqQD8cLhc0W4OUYvC4ERERETUhqQmmtAxJRn5ZRXw+zlkj6ihGJyIiIiI2hBJAjqlWWCQDSh3WqPdHKIWg8GJiIiIqI1JiNOgU0oayq0eeHysT07UEAxORERERG2MJAGZqWaY1RaUOcui3RxqQ9xeFyrcZZAlNVRSy4oiLau1RERERBQSZrOEY1KS4XXqYffYot0cauU8Pg/KXCVw+hxI0qeinbED1Cp1tJvVKC2rtUREREQUEpIEpKdoUViainL3fmhVOsgqOdrNolbG5/fB6q6AHz7EaROQqEuCBgbY7dFuWeMxOBERERG1USYTkJ4YB/thC6xyKeK1idFuErUSfr8fdo8Nbp8TZk08EvVJMKpNACRUVACyLMJ7S8LgRERERNRGSRKQnKRCUWkyKvxWODx26NWGaDeLWji7xw6X1w6D2oQUYxrMmjioJBU8HqCsTAT21FRAo4l2SxuHwYmIiIioDTOZgOQEPVwlybAhB1pZ1+Im7VNscHmdsHms0Ml6pJsyYdbEVc5jstkApxNITgZSUlpeaAIYnIiIiIjaNJUKsFiAkrJESLIVVnc54rQJ0W4WtSBunxs2TwXUkgaphnTEaROglbUAAJ8PKC0FdDqgQwcgPr7lDdFTMDgRERERtXFmM5AQJwO2FDglG1xeJ7SyLtrNohjn9Xlh9ZRDgoREbRISdBbo1frK7zscoqcpMVH0Mun1td9XS8DgRERERNTGqVRAUhJQUWFEgi4ZRc48aFRaSC21a4DCyuf3weaxwufzwqyNR6LOAqPGVPl9v1/MZVKpgIwM0aOpagWjPxmciIiIiAgmk+h5sjksMKgrYPVUwKyJi3azKIb4/X44vHa4vA4YNWZYjMkwacxBAdvlAioqxHspLQ0wGqPY4BBrBdmPiIiIiJpLlkXPgM+jhkWXAp/fC7fPHe1mUYxweOwodRZDkiS0M3VAe1NHmLVxQaGpokIMzUtLE/OZWlNoAtjjRERERERHmM2i58ntNsOiS8ZhRwESdUnRbhZFkdvrgtVTAa2sQ5oxA/G6hMpKeQqPBygvF3OYMjLE+6g1jvJkcCIiIiIiAIFepwMHJMTHW2D1VMDmtgbNX6G2wePzwOapgEqSkaxPRbwuEboaCobY7WJLShIFILTaKDQ2QhiciIiIiKhSXBxgMABelxZJ+hTkVByA16eHrJKj3TSKAJ/fB6u7HH74Ea9NRILOAkMNiyL7fKIAhEYjhuUlJLTOXqaqGJyIiIiIqJIsi0VKDxwAEhPjEa9LRJmrBAlaS7SbRmHk9/th81jh8bkDlfLUphorKzqdgNUqwlJqassvM95QDE5EREREFMRsFr1ODoeEJH0K7B4b7B57jT0P1PLZPTY4vQ4Y1SakGdvBpDFDJVWvIef3i7lMANCunRjWKbehjkhW1SMiIiKiIGq1mLPicABalQ5J+hS4vHb4/L5oN41CyOl1oNRZdKRSXiYyzccgThtfY2hyu4HiYtG71LGjmM/UlkITwB4nIiIiIqqBMtfJ4QDi9QmwuitQ4S5DvDYx2k2jZnL73LC6y6FRaZFqaIc4XQI0Kk2tx1utIjilpophnOo2miDa6NMmIiIiorqo1UBiIpCTAxgMKiTpkyuHdOnkNjKppZXx+rywesqhklRI0qcgQWepsVJe5fFeUQBCrxcFIOLiWn8BiLowOBERERFRjeLjxfAsux0wGIxI0iWjwJ4LrUpXY9EAik2iUl4F/H4f4nQJSNRZYFDXvTqt3S56GxMTxbA8Xe35qs1gcCIiIiKiGmk0ogCA6HUCEnRibacKdznitPHRbh7Vw+/3w+6xweN3wag2w6JPrrVSnkIpM65WA+3bi8p5KlZFAMDiEERERERUh7g4MVTLbgdklYwkfQoAP9xeV7SbRnVweOwocxVDpVKhnakD2ps7wqQx1xmaXC6gpAQwmUQBCIuFoakq9jgRERERUa20WjFcKzdX9DqZNGYk6pJw2FGABJWFQ/ZijMvrhM1jhU7WI9WQgXhdAtSqui/5/X6gokL0NqWni4qKba1iXkMwOBERERFRnZS5Tg6H6H1K1CfB6qmAzWOFSWOOdvMIolKezVMBWVIjxZCGeG0itLK23tt5PGJontEIpKWJNbyoZgxORERERFQnrVYM28rNFcFJo9IgWZ+KnIoD8Pg89fZoUPh4fV7YPBUAgERtEhJ0FujVDat6aLMBTqcoMZ6SIua0Ue34LiciIiKiesXFAUVFgV4nsyYOCToLip2HkahLinbz2hyf3webxwqvzwOzNh4WXRIMamODhk76fEBpqaiU16GD6FHkiMv6MTgRERERUb10OjHXqaBABCdJkpCoT4LNY4XdY4dBbYh2E9sEv98Ph9cOl9cBo8YMi7F9vUUfqnI4RE+TUmZczyW5GozBiYiIiIgaJCFBVF1zOkWQ0sk6JOlTkGs9AK1KC1nFigLh5PQ64PDYoFMb0M7UAWZNXIPPud8v5jKpVEBGBivmNQWDExERERE1iE4nwlNBQWBB1DhtPKzuRFS4yxCvTYxq+1ort9cFm8cKjaxFqqEd4nQJ0KgaPiHJ5RJV88xmUQDCWPfat1QLBiciIiIiajCl18nlEkUjVJIKFn0y7B4bnF4HdDLHfoWKx+eBzVMBlaRCkj4F8bpE6GRdo+6jokJUzktLE2XG1bz6bzKeOiIiIiJqML1ezI8pLBTBCQAMagMsumQU2HOgUWmhkjgGrDl8fh+s7gr44UOcNgGJuqRGzyHzeIDycvF6ZWSI3iYWgGgeBiciIiIiahRlXSel1wkAEnSJsHkqYHWXI06bEN0GtlB+vx82jxUenwtmTTwS9Ukwqk2NXmTYbhdbUpIoAKGtfzknagAGJyIiIiJqFINBDNkrLg5clMsqGUn6FByy7ofb64KmAYuvUoDdY4fLa4dBbUKasR1MGnOje+58PlEAQqMRZcYTEtjLFEoMTkRERETUaImJYi0gtzuwcKpRY4JFl4xCex7iVZZG95S0RU6vA3aPDTpZj3RTJuI08U2qTuh0AlarCEupqSwzHg4MTkRERETUaFV7nRITA/sTdBZY3RWweawwacxRa1+sc/vcsHkqoJY0SDWkI16X2KhKeQq/X8xlAoB27USZcZlV4cOCwYmIiIiImkSpsFe110mtUiNJn4KDFfvg9rmbFAZaM6/PC6unHBIkJGqTkKCzQK9uWveQ2y1Ck9kseplMphA3loIwOBERERFRkxgMolBEaWlwr5NJY0aiLgklziIk6CxRa18s8fl9sHms8Pm8MGvjYdEnwaBu+oJKVqsITqmpQHIyy4xHAk8xERERETWJJAXmOnk8gYt3SZLE2k5eG+weW7MCQkvn9/th99jg9v1/e3ceHlWV5g/8e6tSS6oqlX01IZEQMUKIEJAODki7QMRBFn3oAUaJ0IotGBiNT6CfkSVOsyiD0AzKjKLQDo22DiCtsu8grWwlqJDGdEIUAiiQVCqVpZbz++P+UlLZqkJqCfL9PE89pu69dercl8M1L+fc9zZApzIgUhcNvcpww/d/ORxyAQitVi4AERbGAhCBwsSJiIiIiG6YTicv2TOb5f82USvViNLGoNLyPdQKzQ0VPLjZ1dvrUG+vg1YVikRdCgyqsE4946quDqivl5PVmBhA07Fn4VInMXEiIiIioht2/ayTw+FemCBMZUStJhLmxiqEq2+tJXvVjdegUYUiTpcIoyYcIYob/7W7qcx4SAiQlCQnqAo+YzjgmDgRERERUafodPKSMYvFfdZJkiREaqJRZ7fKMy8hocHrZADYnXbU2qoBANHaGESExkDdyedZNTbKcQ0LA+Li5PvKKDiYqxIRERFRp0iSXAZbCHnW6XraEC2itDFocNTBKZzB6aCfOZwO1DRWw2q3IEwVAQCIDo3tVNLUVGa8rg6Ij5fvZ2LSFFyccSIiIiKiTtPr5VmR2lq50t71jOpw1NosqLXVIEwd3noDNyEhBKz2WtidNrlSniYKakmF851s126Xl+bpdPIsk4GPw+oSmDgRERERUac13etUU9PyXieFpECUNhp19lo0OhqgVt7cVQ2EEKh31KHBUQ+9yoA4XQL0KgMUkgIOh61TbVutQEODXGI8Jubn52NR8DFxIiIiIiKf0Ovl2RGrVZ59ul5oiA5Rmhhctl6ESqG+4XLcwdbgqEe93QpNSCgS9ckwqMJ8UjHQ6ZQLbGg08rI8o5FlxrsaJk5ERERE5BMKhXyvU02NnAg0r/xm1ESg1m5Brd0Cgyqs9Ua6KJujEbV2C1QKNWJDExCmCYdK4ZvpoPp6OdlsKjOu1fqkWfIxJk5ERERE5DNNs061tS1nnUIUIYjSxuC8pQI2p81niYc/2Z12WO0WKCQForWxMGoioPHRUkMh5HuZFAogMVFOOllmvOti4kREREREPtM061RR0fqsky5Ej0hNNK7U/4hwdWSXXbLnFE7U2iwQwokwTTgiNJEIDdH5rP2mMuMGg1wAQue7pslPmDgRERERkU8ZDD/f69S8IpwkSYjQRqHWbkGd3QqdSh+cTrZBCIE6uxU2ZwP0qjBEaqOhC9H7NMGzWOTKebGxchGIEP5GflPgZCARERER+ZRCAURFATabPOvUnEqhQrQ2FjZnI+xOe+A72IY6ex3MjdegVCiRaEhBkiEFepXBZ0mT3Q5cuyZXHExJkWeamDTdPPhHRUREREQ+p9fLy89am3UCAIMqDOGaSFQ3XkO4OjLwHbxOo6MBVnstNEot4nRJCFMbEaLw7a/JdXXyKypKLgChvvFn41KQdIkZp5UrVyItLQ1arRYDBw7El19+6dXn3n//fUiShNGjR/u3g0RERETUIUqlnCQ0NspFEJqTJAmR2mioFGrU2esC30EANqcN1Y3X0OhsRGxoPG4zdEOkNsqnSZPTCVRVyf9NTpaLQDBpujkFPXH64IMP8MILL2Du3Lk4fvw4srOzMXz4cFy+fLndz5WXl6OwsBCDBw8OUE+JiIiIqCMMBnnmyWptfb9GqUG0NhaNjjo4RStr+vzE4XSgprEa9XYrItRRSDakIjo0FmqlbzOahgY5aQoLk5fmRUTw2Uw3s6Av1Vu6dCmefvppPPXUUwCAVatW4dNPP8U777yDWbNmtfoZh8OBiRMnYv78+Thw4ACqqqoC2GMiIiIi8oZSKVfY++EHedlea0lDmNoIiy0cFpsZRnWEX/vjFE5Y7bVwOO0wqI2I1EQhNETns3uYnE4H7PYGhISEoKqqHkqlA9HR8sNsAfl5TeQ7NpsNISEhqK+vh8PhaPM4tVoNhQ/qvAc1cWpsbMSxY8cwe/Zs1zaFQoEHH3wQhw8fbvNzxcXFiIuLw5QpU3DgwIF2v6OhoQENDQ2u92azGYAcaJvN1skzaKmpTX+0TS0x3oHFeAcW4x04jHVgMd6BFex4a7Xy0jSLpe2S2+GqCFgbalDXKN9n5GtCCNQ76mBzNiA0RI/Y0DjoVXKlPKcPilMIIWC1XkZjoxmAQEJCAoSogBASrl2TC0KQ7wkhx7qioqLd5FehUKBbt25QqVo+N6wjfy+Cmjj99NNPcDgciI+Pd9seHx+PM2fOtPqZgwcPYvXq1TCZTF59x8KFCzF//vwW27dv3w6dHwvm79ixw29tU0uMd2Ax3oHFeAcOYx1YjHdgMd6yGgDt3xDScWFhYYiMjERMTAzUanWXfTbVrUgIgR9//BHHjh3D1atXW+y3trWOtBVBX6rXETU1NXjiiSfw1ltvISYmxqvPzJ49Gy+88ILrvdlsRkpKCoYNGwZj07ypD9lsNuzYsQMPPfRQq1kt+RbjHViMd2Ax3oHDWAcW4x1YXSHedjvw/fdykYi2/t3a4XSgsvY8Ghz1MKg6/zuazdGIOocVIQoVItSRCNP4vlIeIC/Pq67+B2JiYhEVFQ2lUqC2tgZhYWFMoPxMCIGaGs+x1mg0UCgU6N+/P0Ka1X9vWo3mjaAmTjExMVAqlbh06ZLb9kuXLiEhIaHF8aWlpSgvL8fIkSNd25z//+EAISEhKCkpQXp6uttnNBoNNBpNi7ZUKpVfLx7+bp/cMd6BxXgHFuMdOIx1YDHegRXMeKtU8sNez5+Xn/HU2u+4SqUKsfoEnLdUwAEHVDdYqMHutMNqt0AhKRCti4NREwGNsuXvgr5SV+eAEBIMBgPUagUA+XdTSZJ8cl8Nta0pD/AUa41GA0mSIElSi78DHfk7EdQ/TbVajZycHOzatcu1zel0YteuXcjNzW1x/J133olTp07BZDK5Xo8++ih+/etfw2QyISUlJZDdJyIiIiIvGQxAaGj7BRJ0Kj0itdGotVsgWqth3g6ncKKm0Qyr3QKjOgK3GVIRq4v3W9LUVGbc4ZAfYqtSSWCe1DX5auYv6Ev1XnjhBUyaNAn9+/fHPffcg2XLlqG2ttZVZe/JJ5/EbbfdhoULF0Kr1aJ3795un4+IiACAFtuJiIiIqOtQqeRy3JWVcgLVlnBNJCy2GljttdCrWnlybjNCCFjttbA7G2FQhyNCEwldiN6vy+QaG+ViF2FhQHi4fE5clffLF/S8+De/+Q2WLFmCOXPm4O6774bJZMLWrVtdBSMqKipQWVkZ5F4SERERUWcZjXKVvbp2nnerUqgQo42Dw2mH3UPFuzp7HcyN16BSqJBk6IZE/W3Qqwx+S5qEAGpq5P7Hx8sPtNX6sAigwwHs3QusXy//t50K211WWloali1b5vXxe/fuhSRJN8XjhYI+4wQA06dPx/Tp01vdt3fv3nY/u2bNGt93iIiIiIh8TqWSn+vkadZJrzIgXBOJaw1XEKGJarG/wVGPOrsV2pBQxOtvQ5jKCKVC6ceeywUuzGa5uEVcnLz0EAB8VeV9wwZgxgz5mVdNkpOB5cuBsWN98x3X85Rczp07F/Pmzetwu0eOHIFer/f6+EGDBqGyshLh4eEd/q5A6xKJExERERHdGsLCgKtX5VmbtpInSZIQqY2G1V6LOrsVoSFyKT6b0war3YIQSYW40ASEacKhUvi/4IXVCjQ0ANHRQEyMnAD60oYNwOOPyzNa1zt/Xt7+0Ue+T56uX9H1wQcfYM6cOSgpKXFtMxh+XiYphIDD4WhRka41sbGxHeqHWq1utShcVxT0pXpEREREdOtQq+VZp/aW6wGAWqlGlDYGjY562ByNMDdWocFRh0hNNG4zdENUaIzfkyan8+eH1yYnAwkJ3iVNQgC1td69zGagoKBl0tTUDiDPRJnN3rXnbU2NhIQE1ys8PBySJLnenzlzBmFhYdiyZQtycnKg0Whw8OBBlJaWYtSoUYiPj4fBYMCAAQOwc+dOt3abL9WTJAlvv/02xowZA51Oh4yMDGzevNm1v/lSvTVr1iAiIgLbtm1DZmYmDAYD8vLy3BI9u92OgoICREVFoXv37pg1axYmTZqE0aNHe3fyN4iJExEREREFlNEIaDTtV9gDgDC1EUZNJKz2WoSpw3GboRvidAnQhvjwxqI21NfLVfPCw+WkKTzc+wIQVitgNCpgMMDjKzxcnllqixDy8r3wcM9tGQzyd/vKrFmzsGjRIpw+fRp9+vSBxWLBiBEjsGvXLpw4cQJ5eXkYOXIkKioq2m1n/vz5GDduHE6ePIkRI0Zg4sSJrT6MtonVasWSJUvw3nvvYf/+/aioqEBhYaFr/+LFi7Fu3TqsXr0aW7duhdlsxqZNm3x12m1i4kREREREAaVWyxX2PP2Sr5AUiNbGIjksFQm6JNeSPX8SAqiulu9dSkwEkpJ8WwDiZlJcXIyHHnoI6enpiIqKQnZ2NqZOnYrevXsjIyMDr7zyCtLT091mkFqTn5+P8ePHo0ePHliwYAEsFgu+/PLLNo+32WxYtWoV+vfvj379+mH69Olujy9asWIFZs+ejTFjxuCOO+7AihUrXJW2/Yn3OBERERFRwBmN8jK4hgZ59qktaqUa6ht8GG5HNZUZNxjkAhC6G8zTdDrAbHZ69QDc/fuBESM8t/nZZ8CQId59t6/079/f7b3FYsG8efPw6aeforKyEna7HXV1dR5nnPr06eP6Wa/Xw2g04vLly20er9PpkJ6e7nqfmJjoOr66uhqXLl3CPffc49qvVCqRk5PjeiCuvzBxIiIiIqKA02jkWafLl9tPnALFYpEr58XGykUgvKiD0CZJAvR6ePVA3GHD5KWA58+3fn+SJMn7hw0DlP4tHNhC8+p4hYWF2LFjB5YsWYIePXogNDQUjz/+OBobG9ttR9XsxjBJktpNclo7vqMPRPYHLtUjIiIioqAwGuVlew0NweuD3S7PfCmVQEqKPNPUmaSpo5RKueQ40PIeqqb3y5YFPmlqzaFDh5Cfn48xY8YgKysLCQkJKC8vD2gfwsPDER8fjyNHjri2ORwOHD9+3O/fzcSJiIiIiIJCq5WLHviyoEFH1NXJ1eoiI+WkKSzM+wIQvjR2rFxy/Lbb3LcnJ/unFPmNysjIwIYNG2AymfDVV19hwoQJfl8e15rnn38eCxcuxMcff4yzZ89i5syZuHbtmt8efNyES/WIiIiIKGjCw+XqdY2N8uxTIDidcsKkUnW8Yp6/jB0LjBoFHDggPyA4MREYPLhrzDQ1Wbp0KSZPnoxBgwYhJiYGRUVFMJvNAe9HUVERLl68iPz8fCgUCjzzzDMYPnw4lH4OFhMnIiIiIgqaplmnK1cCkzg1NMjPOwoPlx9m29ZDeINBqQSGDg389+bn5yM/P9/1fujQoa3eU5SWlobdu3e7bZs2bZrb++ZL91prp+mZTa19V/O+AMDo0aPdjgkJCcGKFSuwfPlymM1mGAwG9OrVC+PGjWvrFH2CiRMRERERBVUgZp2EAGpq5J8TEuTleV1pNoe8d+7cOWzfvh2DBw/GlStXsHbtWpSVlWHChAl+/V4mTkREREQUVKGhcvJ07Zp/EiebTU6a9Hq5+EOzYnF0k1EoFFizZg0KCwshhEDv3r2xc+dOZGZm+vV7mTgRERERUdBFRPz84Nlm1ag7pbZWbtMXZcapa0hJScGhQ4fgdDphNpthNBq9emZWZ7GqHhEREREFXWioXJ7cYvFNew6HPIOlUMgFIAJdZpx+eTh8iIiIiKhLaJp1sts7l+TU1QH19XJ7MTFd4wG7dPPjjBMRERERdQmdnXVyOuUiEw4HkJQkl/Rm0kS+wsSJiIiIiLoESZJniQB51qkjGhvlpEmvlx9mGxkpL9Mj8hUu1SMiIiKiLkOnkyvsmc3yfz0RQp6hcjqB+HggKoplxsk/mIcTERERUZfRNOskhLzkrj12u1wAQqWSZ5liY5k0kf8wcSIiIiKiLkWnA8LC2r/XyWqVn80UHS0nTQZD4PrnLw6nA3vL92L9qfXYW74XDqeHzLELSktLw7Jly7w+fu/evZAkCVVVVX7rk69wqR4RERERdSmSJN+jVFMjzzpdP4vkdMrL+NRqucy40Sgff7PbcHoDZmydgR/MP7i2JRuTsTxvOcZmjvX590kegjZ37lzMmzevw+0eOXIE+g48YXjQoEGorKxEuDfrMoOMiRMRERERdTl6vTzrVFsrJ0eAXGLcav25zLhWG9Qu+syG0xvw+F8eh4Bw237efB6P/+VxfDTuI58nT5WVla6fP/jgA8yZMwclJSWubYbrpvCEEHA4HAjxokZ8bGxsh/qhVquRkJDQoc8EC5fqEREREVGX03Svk8Mh38tUXQ3YbHKJ8aSkrp00CSFQ21jr1ctcb0bBloIWSRMA17YZW2bAXG/2qj0hWrbTmoSEBNcrPDwckiS53p85cwZhYWHYsmULcnJyoNFocPDgQZSWlmLUqFGIj4+HwWDAgAEDsHPnTrd2my/VkyQJb7/9NsaMGQOdToeMjAxs3rzZtb/5Ur01a9YgIiIC27ZtQ2ZmJgwGA/Ly8twSPbvdjoKCAkRFRaF79+6YNWsWJk2ahNGjR3v5J3RjOONERERERF2SXi/fu1RVJc86xcXJ9z91dVa7FcmLk33SloDADzU/IHyxd0vZLLMt0Ku9XyrXnlmzZmHJkiXo3r07IiMj8f3332PEiBH4wx/+AI1Ggz/96U8YOXIkSkpK0K1btzbbmT9/Pl599VW89tprWLFiBSZOnIhz584hKiqq1eOtViuWLFmC9957DwqFAv/6r/+KwsJCrFu3DgCwePFirFu3DqtXr0ZKSgreeecdbNq0Cb/+9a99ct5t4YwTEREREXVJCoW8JC8pSb6f6WZImn5JiouL8dBDDyE9PR1RUVHIzs7G1KlT0bt3b2RkZOCVV15Benq62wxSa/Lz8zF+/Hj06NEDCxYsgMViwZdfftnm8TabDatWrUL//v3Rr18/TJ8+Hbt27XLtX7FiBWbPno0xY8bgjjvuwIoVKxDR9AAwP+KMExERERF1WXq9/LqZ6EJ0MBeZofDiCbz7z+3HiD+P8HjcZxM+w5DUIZ6/W+W77LJ///5u7y0WC+bNm4dPP/0UlZWVsNvtqKurQ0VFRbvt9OnTx/WzXq+H0WjE5cuX2zxep9MhPT3d9T4xMdF1fHV1NS5duoR77rnHtV+pVCInJwdOp7ND59dRTJyIiIiIiHxIkiTo1XqvEqdh6cOQbEzGefP5Vu9zkiAh2ZiMYenDoFQE9iFVzavjFRYWYseOHViyZAl69OiB0NBQPP7442hsbGy3HZVK5fZekqR2k5zWjvf23i1/4lI9IiIiIqIgUSqUWJ63HICcJF2v6f2yvGUBT5pac+jQIeTn52PMmDHIyspCQkICysvLA9qH8PBwxMfH48iRI65tDocDx48f9/t3M3EiIiIiIgqisZlj8dG4j3Cb8Ta37cnGZL+UIr9RGRkZ2LBhA0wmE7766itMmDDB78vjWvP8889j4cKF+Pjjj3H27FnMnDkT165d8/hsqs7iUj0iIiIioiAbmzkWo3qOwoGKA6isqURiWCIGdxvcJWaamixduhSTJ0/GoEGDEBMTg6KiIpjN5oD3o6ioCBcvXkR+fj4UCgWeeeYZDB8+HEqlf2PFxImIiIiIqAtQKpQYmjY04N+bn5+P/Px81/uhQ4e2ek9RWloadu/e7bZt2rRpbu+bL91rrZ2mZza19l3N+wIAo0ePdjsmJCQEK1aswPLly2E2m2EwGNCrVy+MGzeurVP0CSZORERERER00zh37hy2b9+OwYMH48qVK1i7di3KysowYcIEv34vEyciIiIiIrppKBQKrFmzBoWFhRBCoHfv3ti5cycyMzP9+r1MnIiIiIiI6KaRkpKCQ4cOwel0wmw2w2g0elX6vbNYVY+IiIiIiMgDJk5ERERERJ3UFR7QSq3z1Z8NEyciIiIiohukUqkAAFarNcg9obY0NjYCQKfLlfMeJyIiIiKiG6RUKhEREYHLly8DALRaLRobG1FfXx+Q+25uZU6n02OsnU4nfvzxR+h0OoSEdC71YeJERERERNQJCQkJAIDLly9DCIG6ujqEhoZCkqQg9+yXzdtYKxQKdOvWrdN/HkyciIiIiIg6QZIkJCYmIi4uDnV1ddi3bx+GDBniWsZH/mGz2bB//36PsVar1T6Z/WPiRERERETkA0qlEhqNBna7HVqtlomTnymVyoDGmgsviYiIiIiIPGDiRERERERE5AETJyIiIiIiIg9uuXucmh6AZTab/dK+zWaD1WqF2WzmutYAYLwDi/EOLMY7cBjrwGK8A4vxDizGO3B8EeumnMCbh+TecolTTU0NACAlJSXIPSEiIiIioq6gpqYG4eHh7R4jCW/Sq18Qp9OJCxcuICwszC+19c1mM1JSUvD999/DaDT6vH1yx3gHFuMdWIx34DDWgcV4BxbjHViMd+D4ItZCCNTU1CApKcljyfJbbsZJoVAgOTnZ799jNBr5lyWAGO/AYrwDi/EOHMY6sBjvwGK8A4vxDpzOxtrTTFMTFocgIiIiIiLygIkTERERERGRB0ycfEyj0WDu3LnQaDTB7sotgfEOLMY7sBjvwGGsA4vxDizGO7AY78AJdKxvueIQREREREREHcUZJyIiIiIiIg+YOBEREREREXnAxImIiIiIiMgDJk5EREREREQeMHHy0v79+zFy5EgkJSVBkiRs2rTJtc9ms6GoqAhZWVnQ6/VISkrCk08+iQsXLri1kZaWBkmS3F6LFi0K8JncHNqLNwDk5+e3iGVeXp7bMVevXsXEiRNhNBoRERGBKVOmwGKxBPAsbg6eYt08zk2v1157zXUMx7b3Fi5ciAEDBiAsLAxxcXEYPXo0SkpK3I6pr6/HtGnTEB0dDYPBgMceewyXLl1yO6aiogKPPPIIdDod4uLi8NJLL8FutwfyVLo8T7G+evUqnn/+efTs2ROhoaHo1q0bCgoKUF1d7dZOa+P//fffD/TpdHnejO2hQ4e2iOWzzz7rdgzHtnc8xbu8vLzN6/eHH37oOo7j2ztvvvkm+vTp43rQam5uLrZs2eLaz+u277QX62Bft5k4eam2thbZ2dlYuXJli31WqxXHjx/Hyy+/jOPHj2PDhg0oKSnBo48+2uLY4uJiVFZWul7PP/98ILp/02kv3k3y8vLcYrl+/Xq3/RMnTsQ333yDHTt24JNPPsH+/fvxzDPP+LvrNx1Psb4+xpWVlXjnnXcgSRIee+wxt+M4tr2zb98+TJs2DX/729+wY8cO2Gw2DBs2DLW1ta5j/u3f/g1//etf8eGHH2Lfvn24cOECxo4d69rvcDjwyCOPoLGxEZ9//jnWrl2LNWvWYM6cOcE4pS7LU6wvXLiACxcuYMmSJfj666+xZs0abN26FVOmTGnR1rvvvus2vkePHh3gs+n6vBnbAPD000+7xfLVV1917ePY9p6neKekpLS4fs+fPx8GgwEPP/ywW1sc354lJydj0aJFOHbsGI4ePYr7778fo0aNwjfffAOA121fai/WQb9uC+owAGLjxo3tHvPll18KAOLcuXOubampqeL111/3b+d+gVqL96RJk8SoUaPa/My3334rAIgjR464tm3ZskVIkiTOnz/vp57e/LwZ26NGjRL333+/2zaO7Rt3+fJlAUDs27dPCCFEVVWVUKlU4sMPP3Qdc/r0aQFAHD58WAghxGeffSYUCoW4ePGi65g333xTGI1G0dDQENgTuIk0j3Vr/vKXvwi1Wi1sNptrmzd/L6il1uJ93333iRkzZrT5GY7tG+fN+L777rvF5MmT3bZxfN+4yMhI8fbbb/O6HQBNsW5NIK/bnHHyk+rqakiShIiICLftixYtQnR0NPr27YvXXnuNU7SdsHfvXsTFxaFnz5743e9+hytXrrj2HT58GBEREejfv79r24MPPgiFQoEvvvgiGN39Rbh06RI+/fTTVv9lh2P7xjQtL4iKigIAHDt2DDabDQ8++KDrmDvvvBPdunXD4cOHAcjjOysrC/Hx8a5jhg8fDrPZ7PrXT2qpeazbOsZoNCIkJMRt+7Rp0xATE4N77rkH77zzDgQfgehRW/Fet24dYmJi0Lt3b8yePRtWq9W1j2P7xnka38eOHYPJZGr1+s3x3TEOhwPvv/8+amtrkZuby+u2HzWPdWsCed0O8XwIdVR9fT2Kioowfvx4GI1G1/aCggL069cPUVFR+PzzzzF79mxUVlZi6dKlQeztzSkvLw9jx47F7bffjtLSUvz+97/Hww8/jMOHD0OpVOLixYuIi4tz+0xISAiioqJw8eLFIPX65rd27VqEhYW5LT8AOLZvlNPpxMyZM3Hvvfeid+/eAICLFy9CrVa3+EeX+Ph419i9ePGi2/98m/Y37aOWWot1cz/99BNeeeWVFkt6i4uLcf/990On02H79u147rnnYLFYUFBQEIiu35TaiveECROQmpqKpKQknDx5EkVFRSgpKcGGDRsAcGzfKG/G9+rVq5GZmYlBgwa5bef49t6pU6eQm5uL+vp6GAwGbNy4EXfddRdMJhOv2z7WVqybC/R1m4mTj9lsNowbNw5CCLz55ptu+1544QXXz3369IFarcbUqVOxcOFCaDSaQHf1pvYv//Ivrp+zsrLQp08fpKenY+/evXjggQeC2LNftnfeeQcTJ06EVqt1286xfWOmTZuGr7/+GgcPHgx2V37xPMXabDbjkUcewV133YV58+a57Xv55ZddP/ft2xe1tbV47bXX+ItlO9qK9/W/3GRlZSExMREPPPAASktLkZ6eHuhu/mJ4Gt91dXX485//7DaWm3B8e69nz54wmUyorq7GRx99hEmTJmHfvn3B7tYvUluxvj55CsZ1m0v1fKgpaTp37hx27NjhNtvUmoEDB8Jut6O8vDwwHfwF6969O2JiYvDdd98BABISEnD58mW3Y+x2O65evYqEhIRgdPGmd+DAAZSUlOC3v/2tx2M5tj2bPn06PvnkE+zZswfJycmu7QkJCWhsbERVVZXb8ZcuXXKN3YSEhBbVmprec3y31Fasm9TU1CAvLw9hYWHYuHEjVCpVu+0NHDgQP/zwAxoaGvzV5Zuap3hfb+DAgQDgdu3m2O4Yb+L90UcfwWq14sknn/TYHsd329RqNXr06IGcnBwsXLgQ2dnZWL58Oa/bftBWrJsE67rNxMlHmpKms2fPYufOnYiOjvb4GZPJBIVC0WJJGXXcDz/8gCtXriAxMREAkJubi6qqKhw7dsx1zO7du+F0Ol3/o6aOWb16NXJycpCdne3xWI7ttgkhMH36dGzcuBG7d+/G7bff7rY/JycHKpUKu3btcm0rKSlBRUWFa313bm4uTp065faPA03/WNPaUoZbladYA/K/WA4bNgxqtRqbN29uMZvaGpPJhMjISM6mNuNNvJszmUwA4Hbt5tj2TkfivXr1ajz66KOIjY312C7Ht/ecTicaGhp43Q6AplgDQb5u+7zcxC9UTU2NOHHihDhx4oQAIJYuXSpOnDghzp07JxobG8Wjjz4qkpOThclkEpWVla5XU6WUzz//XLz++uvCZDKJ0tJS8b//+78iNjZWPPnkk0E+s66pvXjX1NSIwsJCcfjwYVFWViZ27twp+vXrJzIyMkR9fb2rjby8PNG3b1/xxRdfiIMHD4qMjAwxfvz4IJ5V19RerJtUV1cLnU4n3nzzzRaf59jumN/97nciPDxc7N271+1aYbVaXcc8++yzolu3bmL37t3i6NGjIjc3V+Tm5rr22+120bt3bzFs2DBhMpnE1q1bRWxsrJg9e3YwTqnL8hTr6upqMXDgQJGVlSW+++47t2PsdrsQQojNmzeLt956S5w6dUqcPXtWvPHGG0Kn04k5c+YE89S6JE/x/u6770RxcbE4evSoKCsrEx9//LHo3r27GDJkiKsNjm3veXMtEUKIs2fPCkmSxJYtW1q0wfHtvVmzZol9+/aJsrIycfLkSTFr1iwhSZLYvn27EILXbV9qL9bBvm4zcfLSnj17BIAWr0mTJomysrJW9wEQe/bsEUIIcezYMTFw4EARHh4utFqtyMzMFAsWLHD7RZ9+1l68rVarGDZsmIiNjRUqlUqkpqaKp59+2q3EpxBCXLlyRYwfP14YDAZhNBrFU089JWpqaoJ0Rl1Xe7Fu8t///d8iNDRUVFVVtfg8x3bHtHWtePfdd13H1NXVieeee05ERkYKnU4nxowZIyorK93aKS8vFw8//LAIDQ0VMTEx4sUXX3QrxUqeY93W2AcgysrKhBDyYwzuvvtuYTAYhF6vF9nZ2WLVqlXC4XAE78S6KE/xrqioEEOGDBFRUVFCo9GIHj16iJdeeklUV1e7tcOx7R1vriVCCDF79myRkpLS6pjl+Pbe5MmTRWpqqlCr1SI2NlY88MADrqRJCF63fam9WAf7ui0JwZqTRERERERE7eE9TkRERERERB4wcSIiIiIiIvKAiRMREREREZEHTJyIiIiIiIg8YOJERERERETkARMnIiIiIiIiD5g4ERERERERecDEiYiIiIiIyAMmTkREt7Dy8nJIkgSTyRTsrricOXMGv/rVr6DVanH33XcH5DvT0tKwbNkyr4/fu3cvJElCVVWV3/rUld3q509EtyYmTkREQZSfnw9JkrBo0SK37Zs2bYIkSUHqVXDNnTsXer0eJSUl2LVrV6vHDB06FDNnzvTZdx45cgTPPPOM18cPGjQIlZWVCA8P91kfiIioa2PiREQUZFqtFosXL8a1a9eC3RWfaWxsvOHPlpaW4p/+6Z+QmpqK6OjoG25HCAG73e7VsbGxsdDpdF63rVarkZCQcMsmt0REtyImTkREQfbggw8iISEBCxcubPOYefPmtVi2tmzZMqSlpbne5+fnY/To0ViwYAHi4+MRERGB4uJi2O12vPTSS4iKikJycjLefffdFu2fOXMGgwYNglarRe/evbFv3z63/V9//TUefvhhGAwGxMfH44knnsBPP/3k2j906FBMnz4dM2fORExMDIYPH97qeTidThQXFyM5ORkajQZ33303tm7d6tovSRKOHTuG4uJiSJKEefPmtWgjPz8f+/btw/LlyyFJEiRJQnl5uWv52JYtW5CTkwONRoODBw+itLQUo0aNQnx8PAwGAwYMGICdO3e6tdl8qZ4kSXj77bcxZswY6HQ6ZGRkYPPmza79zZeqrVmzBhEREdi2bRsyMzNhMBiQl5eHyspK12fsdjsKCgoQERGB6OhoFBUVYdKkSRg9enSrsQKAc+fOYeTIkYiMjIRer0evXr3w2WefAQAcDgemTJmC22+/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VFSEzz//HNOnT3fNRn788ceu4hCffPIJ/vjHP8JkMuHcuXP405/+BKfTiZ49e/qsv0RE/sbEiYioiykuLm7xi31mZibeeOMNrFy5EtnZ2fjyyy9brTh3oxYtWoRFixYhOzsbBw8exObNmxETEwMArlkih8OBYcOGISsrCzNnzkRERITbvTPeKCgowAsvvIAXX3wRWVlZ2Lp1KzZv3oyMjIwOtVNYWAilUom77roLsbGx7d6vtHTpUkRGRmLQoEEYOXIkhg8fjn79+nXo+3yhqKgI48ePx5NPPonc3FzXfUBarbbNzzgcDkybNg2ZmZnIy8vDHXfcgTfeeAMAMHXqVIwdOxa/+c1vMHDgQFy5cgXPPfecz/rb3phork+fPti3bx/+/ve/Y/Dgwejbty/mzJmDpKQkAEBERAQ2bNiA+++/H5mZmVi1ahXWr1+PXr16+ay/RET+JonOLsAmIiKiDnM6ncjMzMS4cePwyiuvBLs7LuXl5bj99ttx4sSJFs8OIyK6lYUEuwNERES3gnPnzmH79u2477770NDQgP/6r/9CWVkZJkyYEOyuERGRF7hUj4iIKAAUCgXWrFmDAQMG4N5778WpU6ewc+fONgsuEBFR18KlekRERERERB5wxomIiIiIiMgDJk5EREREREQeMHEiIiIiIiLygIkTERERERGRB0yciIiIiIiIPGDiRERERERE5AETJyIiIiIiIg+YOBEREREREXnw/wD5luJEBx2pVAAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 定义训练样本数量的范围\n",
    "train_sizes = np.linspace(0.1,1.0,10)\n",
    "print(X)\n",
    "# 使用 learning_curve 函数计算不同训练样本数量下模型的训练和验证得分\n",
    "# train_sizes, train_scores,test_scores= learning_curve(\n",
    "#     LogisticRegression(),\n",
    "#     X,y,train_sizes=train_sizes,cv=5,\n",
    "#     s\n",
    "#     n_jobcoring='accuracy',s =-1\n",
    "# )\n",
    "\n",
    "train_sizes, train_scores, test_scores = learning_curve(\n",
    "    best_model, X, y, train_sizes=train_sizes,scoring='accuracy',n_jobs=4\n",
    ")\n",
    "\n",
    "\n",
    "#计算平均值和标准差\n",
    "# 训练集的平均值\n",
    "train_mean = np.mean(train_scores, axis=1)\n",
    "# 训练集的标准差\n",
    "train_std = np.std(train_scores, axis=1)\n",
    "\n",
    "# 测试集的平均值\n",
    "test_mean = np.mean(test_scores, axis=1)\n",
    "test_std = np.std(test_scores, axis=1)\n",
    "\n",
    "#创建图形\n",
    "plt.figure(figsize=(10,6))\n",
    "# 绘制学习曲线\n",
    "plt.plot(train_sizes, train_mean, marker='o',color='blue',label='Training')\n",
    "\n",
    "plt.fill_between(train_sizes, train_mean - train_std,\n",
    "                         train_mean + train_std, alpha=0.1,color='blue')\n",
    "\n",
    "\n",
    "plt.plot(train_sizes, test_mean, marker='o',color='green',label='Training')\n",
    "plt.fill_between(train_sizes, test_mean - test_std,\n",
    "                         test_mean + test_std, alpha=0.1,color='green')\n",
    "\n",
    "#设置网格\n",
    "plt.grid()\n",
    "plt.xlabel('Number of training samples')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.legend(loc='lower right')\n",
    "plt.title('Learning Curve')\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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T56MRYsWoU+fPliwYAHi4+ORmZnZYEa9c+dOPPTQQ5gzZw7uvPNOfPnllxg+fDj27duH2NhYGb5Brbo5N5xvQ82du6sKGa/Fy/bZjXHs2DFUVFRg0KBBFseNRiO6d+8uvb7//vvx/fff480338RHH32EyMhIi/MXLlyIpUuXIjc3F5WVlTAajejWrZvFOTExMRaLHGq1WovfVSqVCgEBAcjPz7e4ri7pAgAXFxf06tULhw4davD7HDx4EH/88Qe++OIL6ZgQQtoeIyoqqsFrduzYgVmzZknHTCYTqqqqUFFRgfvvvx8LFixA27ZtkZCQgCFDhmDo0KFSctdY4eHh8Pb2tvj+KpWq3j259PuvX78ec+bMweHDh1FSUoKamhoprsuthH3o0CG4uLhICRJwcTTh0vumVqvRpUuXK8Zclzj8PSnMzMzE7t278f333wOo/e8yYsQILFmyxOrkRghx1f8QDg0NvarrbGXp0qUYOXKkxf0RQuCZZ55BcHAwtm3bBnd3d3z66acYOnQo9uzZY5HEubu7230vOtmTm/nz52Ps2LEYM2YMAGDRokVYs2YNli5diqlTp9Y7/91330VCQgKef/55AMDrr7+OdevW4YMPPsCiRYscGvulLo7ccHViat4UCkWjHw3JpaysDACwZs2aeh2FRqOR/lxRUYG9e/dCpVLh6NGjFuetXLkSU6ZMwbx589C3b194e3tj7ty5+O233yzO+/u/ohUKRYPHLjextbHf56mnnsKzzz5br61169aXvWbmzJkNTiR1c3NDWFgYMjMzsX79eqxbtw7jx4/H3LlzsWXLliuODPydtd8/JycHd955J55++mnMmjUL/v7+2L59Ox5//HEYjcZr3ubD3d39H5OKwMBAAMD58+cRFBQkHV+yZAlqamosRnSEENBoNPjggw/g6+sLHx8fAEBxcXG90ZGioiL4+voCADp06IDi4mKcOXPG6tGba3kspdPpYDQaUVRUZBFfXl7eP47CAbWPMzMzM7Fq1SqL4xs3bsT//vc/nD9/XroHH374IdatW4fly5db9Ofnzp1Du3bt/vGzroWsv4GMRiP27t2LadOmSceUSiXi4uKwa9euBq/ZtWsXJk+ebHEsPj4eP/zwQ4PnGwwGGAwG6XVJScm1B96AupEbDUduiK570dHR0Gg0yM3NRf/+/S973nPPPQelUomf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RyIiaymVSrRu3fqa/5HE5IaIrolCoUBISAiCg4NRXV0tdzhE1ISp1ep6+1NdDSY3RGQTKpXqmp+TExHZAicUExERkVNhckNEREROhckNEREROZVmN+emboGgkpISmSMhIiKixqrrtxuz0F+zS25KS0sBAGFhYTJHQkRERNYqLS2Fr6/vFc9pdntLmc1mnD59Gt7e3jZfbKykpARhYWE4ceIE962yI95nx+B9dgzeZ8fhvXYMe91nIQRKS0vRsmXLfywXb3YjN0qlEq1atbLrZ/j4+PB/HAfgfXYM3mfH4H12HN5rx7DHff6nEZs6nFBMREREToXJDRERETkVJjc2pNFokJycDI1GI3coTo332TF4nx2D99lxeK8d43q4z81uQjERERE5N47cEBERkVNhckNEREROhckNERERORUmN0RERORUmNxYaeHChQgPD4ebmxv69OmD3bt3X/H81atXo1OnTnBzc0Pnzp2xdu1aB0XatFlznxcvXoxbbrkFLVq0QIsWLRAXF/eP/12olrV/n+usXLkSCoUCw4cPt2+ATsLa+1xUVIRnnnkGISEh0Gg06NChA393NIK193nBggXo2LEj3N3dERYWhkmTJqGqqspB0TZNW7duxdChQ9GyZUsoFAr88MMP/3jN5s2b0aNHD2g0GrRv3x7Lli2ze5wQ1GgrV64UarVaLF26VKSnp4uxY8cKPz8/kZeX1+D5O3bsECqVSrz99tsiIyNDvPLKK8LV1VX8+eefDo68abH2Pj/88MNi4cKFYv/+/eLQoUPi0UcfFb6+vuLkyZMOjrxpsfY+18nOzhahoaHilltuEcOGDXNMsE2YtffZYDCIXr16iSFDhojt27eL7OxssXnzZnHgwAEHR960WHufv/jiC6HRaMQXX3whsrOzRWpqqggJCRGTJk1ycORNy9q1a8XLL78svvvuOwFAfP/991c8PysrS3h4eIjJkyeLjIwM8f777wuVSiVSUlLsGieTGyv07t1bPPPMM9Jrk8kkWrZsKebMmdPg+Q888IC44447LI716dNHPPXUU3aNs6mz9j7/XU1NjfD29hbLly+3V4hO4Wruc01NjejXr5/49NNPRWJiIpObRrD2Pn/00Ueibdu2wmg0OipEp2DtfX7mmWfEbbfdZnFs8uTJ4qabbrJrnM6kMcnNCy+8IGJiYiyOjRgxQsTHx9sx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OBISEnDvvffijz/+wKpVq7B9+3YkJSVZFZO7uzvMZjNqamrw7rvvYt68efjPf/6DP/74A/Hx8bjrrrtw9OhRAMB7772Hn376CV9//TUyMzPxxRdfIDw8vMH33b17NwBg/fr1OHPmDL777rt659x///04e/YsNm3aJB07d+4cUlJSMHLkSADAtm3bMHr0aEycOBEZGRn4+OOPsWzZMsyaNavR3zEnJwepqalQq9XSMbPZjFatWmH16tXIyMjAjBkz8NJLL+Hrr78GAEyZMgUPPPAAEhIScObMGZw5cwb9+vVDdXU14uPj4e3tjW3btmHHjh3w8vJCQkICjEZjo2Miclp233eciBwuMTFRqFQq4enpKf3cd999DZ67evVqERAQIL3+7LPPhK+vr/Ta29tbLFu2rMFrH3/8cfHkk09aHNu2bZtQKpWisrKywWv+/v5HjhwRHTp0EL169RJCCNGyZUsxa9Ysi2tuuOEGMX78eCGEEBMmTBC33XabMJvNDb4/APH9998LIYTIzs4WAMT+/fstzklMTBTDhg2TXg8bNkw89thj0uuPP/5YtGzZUphMJiGEEAMHDhSzZ8+2eI/PP/9chISENBiDEEIkJycLpVIpPD09hZubmwAgAIj58+df9hohhHjmmWfEvffee9lY6z67Y8eOFvfAYDAId3d3kZqaesX3J2oOOOeGyEkNGDAAH330kfTa09MTQO0oxpw5c3D48GGUlJSgpqYGVVVVqKiogIeHR733mTx5Mp544gl8/vnn0qOVdu3aAah9ZPXHH3/giy++kM4XQsBsNiM7OxtRUVENxlZcXAwvLy+YzWZUVVXh5ptvxqeffoqSkhKcPn0aN910k8X5N910Ew4ePAig9pHSoEGD0LFjRyQkJODOO+/E4MGDr+lejRw5EmPHjsWHH34IjUaDL774Ag8++CCUSqX0PXfs2GExUmMyma543wCgY8eO+Omnn1BVVYX//ve/OHDgACZMmGBxzsKFC7F06VLk5uaisrISRqMR3bp1u2K8Bw8exLFjx+Dt7W1xvKqqCsePH7+KO0DkXJjcEDkpT09PtG/f3uJYTk4O7rzzTjz99NOYNWsW/P39sX37djz++OMwGo0NdtKvvvoqHn74YaxZswY///wzkpOTsXLlStx9990oKyvDU089hWeffbbeda1bt75sbN7e3ti3bx+USiVCQkLg7u4OACgpKfnH79WjRw9kZ2fj559/xvr16/HAAw8gLi4O33zzzT9eezlDhw6FEAJr1qzBDTfcgG3btuGdd96R2svKyjBz5kzcc8899a51c3O77Puq1Wrpv8Gbb76JO+64AzNnzsTrr78OAFi5ciWmTJmCefPmoW/fvvD29sbcuXPx22+/XTHesrIy9OzZ0yKprHO9TBonkhOTG6JmZO/evTCbzZg3b540KlE3v+NKOnTogA4dOmDSpEl46KGH8Nlnn+Huu+9Gjx49kJGRUS+J+idKpbLBa3x8fNCyZUvs2LED/fv3l47v2LEDvXv3tjhvxIgRGDFiBO677z4kJCTg3Llz8Pf3t3i/uvktJpPpivG4ubnhnnvuwRdffIFjx46hY8eO6NGjh9Teo0cPZGZmWv09/+6VV17Bbbfdhqefflr6nv369cP48eOlc/4+8qJWq+vF36NHD6xatQrBwcHw8fG5ppiInBEnFBM1I+3bt0d1dTXef/99ZGVl4fPPP8eiRYsue35lZSWSkpKwefNm/PXXX9ixYwf27NkjPW568cUXsXPnTiQlJeHAgQM4evQofvzxR6snFF/q+eefx1tvvYVVq1YhMzMTU6dOxYEDBzBx4kQAwPz58/HVV1/h8OHDOHLkCFavXg2dTtfgwoPBwcFwd3dHSkoK8vLyUFxcfNnPHTlyJNasWYOlS5dKE4nrzJgxAytWrMDMmTORnp6OQ4cOYeXKlXjllVes+m59+/ZFly5dMHv2bABAZGQkfv/9d6SmpuLIkSOYPn069uzZY3FNeHg4/vjjD2RmZqKwsBDV1dUYOXIkAgMDMWzYMGzbtg3Z2dnYvHkznn32WZw8edKqmIicktyTfojI9hqahFpn/vz5IiQkRLi7u4v4+HixYsUKAUCcP39eCGE54ddgMIgHH3xQhIWFCbVaLVq2bCmSkpIsJgvv3r1bDBo0SHh5eQlPT0/RpUuXehOCL/X3CcV/ZzKZxKuvvipCQ0OFq6ur6Nq1q/j555+l9k8++UR069ZNeHp6Ch8fHzFw4ECxb98+qR2XTCgWQojFixeLsLAwoVQqRf/+/S97f0wmkwgJCREAxPHjx+vFlZKSIvr16yfc3d2Fj4+P6N27t/jkk08u+z2Sk5NF165d6x3/6quvhEajEbm5uaKqqko8+uijwtfXV/j5+Ymnn35aTJ061eK6/Px86f4CEJs2bRJCCHHmzBkxevRoERgYKDQajWjbtq0YO3asKC4uvmxMRM2FQggh5E2viIiIiGyHj6WIiIjIqTC5ISIiIqfC5IaIiIicCpMbIiIicipMboiIiMipMLkhIiIip8LkhoiIiJwKkxsiIiJyKkxuiIiIyKkwuSEiIiKnwuSGiIiInMr/AzVRTpt/5KW6AAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = best_model.predict(X_test)\n",
    "fpr, tpr, thresholds = metrics.roc_curve(y_test, y_pred)\n",
    "roc_auc = metrics.auc(fpr, tpr)\n",
    "display = metrics.RocCurveDisplay(fpr=fpr, tpr=tpr, roc_auc=roc_auc,\n",
    "                                  estimator_name='example estimator')\n",
    "display.plot()\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-0.09386787  1.51935083  0.7677397 ]]\n"
     ]
    },
    {
     "ename": "AttributeError",
     "evalue": "'LogisticRegression' object has no attribute 'feature_importances_'",
     "output_type": "error",
     "traceback": [
      "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
      "\u001B[1;31mAttributeError\u001B[0m                            Traceback (most recent call last)",
      "Cell \u001B[1;32mIn[30], line 3\u001B[0m\n\u001B[0;32m      1\u001B[0m \u001B[38;5;241m7\u001B[39m\u001B[38;5;66;03m#.使用最优模型预测数据集，并打印模型特征权重 (5分)\u001B[39;00m\n\u001B[0;32m      2\u001B[0m \u001B[38;5;28mprint\u001B[39m(best_model\u001B[38;5;241m.\u001B[39mcoef_)\n\u001B[1;32m----> 3\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[43mlr\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfeature_importances_\u001B[49m)\n",
      "\u001B[1;31mAttributeError\u001B[0m: 'LogisticRegression' object has no attribute 'feature_importances_'"
     ]
    }
   ],
   "source": [
    "#.使用最优模型预测数据集，并打印模型特征权重 (5分)\n",
    "print(best_model.coef_)\n",
    "# 一些常见的特征重要性指标包括线性模型中的coef_参数以及决策树及基于决策树的集成算法中的feature_importances_"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}